用ggplot2作气泡图

用ggplot2作气泡图

气泡图是具有第三个维度的散点图,第三维度通过散点的大小来表示。画气泡图至少需要三个维度的数据,分别是x,y和表示气泡大小的维度。下面用一个例子来说明,其中,x是人均GDP,y是预期寿命,圆圈大小表示人口,代码如下:

# 导入包
library(ggplot2)
library(dplyr)

#gapminder提供了数据集
library(gapminder)
data <- gapminder %>% filter(year=="2007") %>% dplyr::select(-year)

# 最基本的气泡图
ggplot(data, aes(x=gdpPercap, y=lifeExp, size = pop)) +
    geom_point(alpha=0.7)
用ggplot2作气泡图插图
图1

控制圆的大小:scale_size()

我们需要在上一张图表上改进的第一件事是气泡大小。scale_size()允许使用range参数设置最小和最大圆圈的大小。请注意,您可以使用 自定义图例名称name

注意:圆圈经常重叠。为避免图表顶部出现大圆圈,您必须首先重新排序数据集,如下面的代码所示。


library(ggplot2)
library(dplyr)


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

# 基本气泡图
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)")
用ggplot2作气泡图插图1
图2

添加第四个维度:颜色

如果您的数据集中还有一个变量,为什么不使用圆形颜色显示它?这里使用各个国家的大陆来控制圆圈颜色:


library(ggplot2)
library(dplyr)


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

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)")
用ggplot2作气泡图插图2
图3

整理自:https://r-graph-gallery.com/320-the-basis-of-bubble-plot.html