【发布时间】:2020-02-16 22:16:20
【问题描述】:
(加载库)
library(tidyverse)
library(sf)
假设我们有两个点在同一位置 (x,y) 但具有不同的值 (z):
x<-c(1,1)
y<-c(1,1)
z<-c(0,1)
我知道 geom_point 会根据数据集的顺序更改显示值的顺序(位于顶部):
ggplot(data=points, aes(x=x,y=y))+geom_point(aes(color=z),size=20)
ggplot(data=points%>%arrange(desc(z)), aes(x=x,y=y))+geom_point(aes(color=z),size=20)
如果“z”是一个因素,这仍然有效。
如果我将点放入 sf 对象并使用 geom_sf 绘制它们,如果“z”是数字,它就可以工作。
ggplot(data=points%>%st_as_sf(x=.,coords=c("x","y"),crs=4326) )+geom_sf(aes(color=z),size=20)
ggplot(data=points%>%st_as_sf(x=.,coords=c("x","y"),crs=4326) %>%arrange(desc(z)))+geom_sf(aes(color=z),size=20)
但是,使用 geom_sf 和 factor(z),当我重新排序数据集时没有任何变化。
ggplot(data=points%>%st_as_sf(x=.,coords=c("x","y"),crs=4326) %>%mutate(z=factor(z)))+geom_sf(aes(color=z),size=20)
ggplot(data=points%>%st_as_sf(x=.,coords=c("x","y"),crs=4326) %>%mutate(z=factor(z))%>%
arrange(desc(z)))+geom_sf(aes(color=z),size=20)
sf factor order 1 sf factor order 2
如何在上一个示例中强制重新排序?
非常感谢!
【问题讨论】: