更改tmap地图R中数据类别的打印顺序

use*_*609 4 r 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)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

use*_*609 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)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明