【发布时间】:2021-10-19 23:41:18
【问题描述】:
我想知道:
a)什么决定了元素在 ggplot2 图中的呈现顺序?
b)如何根据变量或渐变色标影响元素的绘图顺序?
上下文:我想可视化道路网络数据的连续变量(例如交通流量)。重要的是最后绘制具有高值的线(以便它们出现在具有较低值的线的顶部),以使绘图清晰易读。目前,默认似乎是按随机顺序绘制线条。
下面是一个使用道路长度作为变量的示例,预期的输出将按照其值的顺序绘制道路线,即首先是灰色线,然后是红灰色线,然后是较深的红色线,等等。
示例数据:
library(GISTools)
library(sf)
library(ggplot2)
data(newhaven)
ggplot() +
geom_sf(data = st_as_sf(roads, "lines"), aes(col = LENGTH)) +
scale_colour_gradient(low = "grey", high = "red")
这是一个放大图,很好地说明了问题所在:灰色的道路覆盖了红色的道路。但是,我想要实现的是最后绘制红色道路(因为它具有更大的长度值)。
ggplot() +
geom_sf(data = st_as_sf(roads, "lines"), aes(col = LENGTH, size = 3)) +
scale_colour_gradient(low = "grey", high = "red") +
coord_sf(xlim = c(557000, 560000), ylim = c(178000, 180000)) +
annotate(geom = "curve", x = 558000, y = 178500, xend = 558850, yend = 179150, curvature = -.3, arrow = arrow(length = unit(3, "mm")))
【问题讨论】: