我正在使用tmap
包在R中绘制一些空间数据。我在tm_dots
函数中定义了断点和绘图颜色。我希望能够定义类别的绘图顺序,以便它们由类别定义(最高类别在顶部,第二高于该类别,等等)。我需要能够清楚地看到最高类别点的位置。我知道这可以用多个空间点数据帧来实现,但还有另一种不那么笨重的方法吗?以下是使用默认数据的示例。我把这些点变得很大,所以它们重叠。理想情况下,在情节中,情节顺序为:蓝色,绿色,橙色,红色。
libary(tmap)
library(sp)
data("meuse")
coordinates(meuse) <- c("x","y")
tm_layout() +
tm_shape(meuse) + tm_dots("cadmium", breaks = c(1,2,3,4,Inf), palette = "-Spectral", auto.palette.mapping = FALSE,
size = 1) +
tm_legend(legend.outside = TRUE)
答案 0 :(得分:5)
原来的默认绘图顺序是原始数据框行顺序。为了使类别以正确的顺序绘制,我为类别创建了一个数字因子变量,并按原样对原始数据框进行排序。
libary(tmap)
library(sp)
library(dplyr)
data("meuse")
meuse <- meuse %>%
mutate(cat = base::cut(cadmium, breaks = c(-Inf,1,2,3,4,Inf),
labels = c(1,2,3,4,5))) %>%
arrange(cat)
coordinates(meuse) <- c("x","y")
tm_layout() +
tm_shape(meuse) + tm_dots("cadmium", breaks = c(1,2,3,4,Inf), palette = "-Spectral", auto.palette.mapping = FALSE,
size = 1) +
tm_legend(legend.outside = TRUE)