更改tmap map R中数据类别的绘图顺序

时间:2018-05-15 20:45:20

标签: r sp tmap

我正在使用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)

enter image description here

1 个答案:

答案 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)

enter image description here