如何在ggplot中重新排序连续变量以调整点图层级?
调整ggplot散点图连续变量的绘制顺序,让高值点显示在上层
解决这个问题的核心逻辑很直接:ggplot是按照数据框的行顺序依次绘制图形元素的,后绘制的元素会覆盖在之前的元素上方。所以只要把数据按pop值升序排列,让人口少的点先画、人口多的点后画,就能实现高值点在上层的效果。
修改后的代码如下:
library(gapminder) library(dplyr) # 先按pop升序排序数据,再绘图 gapminder %>% arrange(pop) %>% ggplot() + geom_point(aes(year, y = log(gdpPercap), color = pop))
关键说明
arrange(pop):用dplyr的arrange函数对数据框按pop列升序排序,这样数据框中pop小的行排在前面,绘图时会先被绘制;pop大的行排在后面,后绘制就会覆盖在上方,更容易被看到。- 你可以对比原代码和修改后的图:原代码中人口多的点可能被人口少的点遮挡,修改后高人口的点会清晰显示在最上层。
内容的提问来源于stack exchange,提问作者yuliaUU
相关产品推荐
相关产品推荐

