气泡图是具有第三个维度的散点图,第三维度通过散点的大小来表示。画气泡图至少需要三个维度的数据,分别是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)
控制圆的大小: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)")
添加第四个维度:颜色
如果您的数据集中还有一个变量,为什么不使用圆形颜色显示它?这里使用各个国家的大陆来控制圆圈颜色:
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)")
整理自:https://r-graph-gallery.com/320-the-basis-of-bubble-plot.html