Bubble Charts in ggplot2

How to make Bubble Charts plots in ggplot2 with Plotly.


Plotly Studio: Transform any dataset into an interactive data application in minutes with AI. Sign up for early access now.

Default bubble chart

library(plotly)
library(dplyr)
library(gapminder)

data <- gapminder %>% filter(year=="2007") %>% dplyr::select(-year)

p <- ggplot(data, aes(x=gdpPercap, y=lifeExp, size = pop)) +
              geom_point(alpha=0.7)

ggplotly(p)

Controlling size

library(plotly)
library(dplyr)
library(gapminder)

data <- gapminder %>% filter(year=="2007") %>% dplyr::select(-year)

# Most basic bubble plot
p <- data %>%
      arrange(desc(pop)) %>%
      mutate(country = factor(country, country)) %>%
      ggplot(aes(x=gdpPercap, y=lifeExp, size = pop)) +
        geom_point(alpha=0.5) +
        scale_size(range = c(.1, 24), name="Population (M)")

ggplotly(p)

Adding colour

library(plotly)
library(dplyr)
library(gapminder)

data <- gapminder %>% filter(year=="2007") %>% dplyr::select(-year)

# Most basic bubble plot
p <- data %>%
      arrange(desc(pop)) %>%
      mutate(country = factor(country, country)) %>%
      ggplot(aes(x=gdpPercap, y=lifeExp, size=pop, color=continent)) +
        geom_point(alpha=0.5) +
        scale_size(range = c(.1, 24), name="Population (M)")

ggplotly(p)

What About Dash?

Dash for R is an open-source framework for building analytical applications, with no Javascript required, and it is tightly integrated with the Plotly graphing library.

Learn about how to install Dash for R at https://dashr.plot.ly/installation.

Everywhere in this page that you see fig, you can display the same figure in a Dash for R application by passing it to the figure argument of the Graph component from the built-in dashCoreComponents package like this:

library(plotly)

fig <- plot_ly() 
# fig <- fig %>% add_trace( ... )
# fig <- fig %>% layout( ... ) 

library(dash)
library(dashCoreComponents)
library(dashHtmlComponents)

app <- Dash$new()
app$layout(
    htmlDiv(
        list(
            dccGraph(figure=fig) 
        )
     )
)

app$run_server(debug=TRUE, dev_tools_hot_reload=FALSE)