如何在R语言ggplot2中让小气泡叠加在大气泡上方(不使用alpha)
解决ggplot2气泡图中小气泡被大气泡遮挡的问题
要让小气泡不用alpha半透明效果也能叠加在大气泡上方,核心就是调整数据的绘制顺序——让大气泡先画,小气泡后画,后绘制的元素会自动覆盖在前面的元素之上。
直接看修改后的代码:
library(ggplot2) library(dplyr) library(gapminder) # 处理2007年的数据集 data <- gapminder %>% filter(year == "2007") %>% select(-year) %>% # 关键步骤:按人口从大到小排序,小气泡会排在数据框末尾,最后被绘制 arrange(desc(pop)) %>% mutate(country = factor(country, country)) # 绘制气泡图,无需alpha参数 ggplot(data, aes(x = gdpPercap, y = lifeExp, size = pop, color = continent)) + geom_point() + scale_size(range = c(.1, 24), name = "Population (M)")
原理很直白:ggplot绘制图层时,会严格按照数据框的行顺序依次绘制点。把人口多的大气泡排在数据前面先画,人口少的小气泡放在后面后画,小气泡自然就会叠加在大气泡上方,不会被完全遮挡。
内容的提问来源于stack exchange,提问作者Tpellirn
相关产品推荐
相关产品推荐

