【问题标题】:tmap tm_dots behavior on user defined shape column用户定义的形状列上的 tmap tm_dots 行为
【发布时间】:2019-06-25 05:00:17
【问题描述】:

tm 点似乎对标识给定观察所需形状的列存在问题

来自形状枚举:

0 = 开放正方形

1 = 打开圆圈

22 = 实心正方形

21 = 开圈

当我将 shape 参数设置为“shapeCol”时 其中 shapeCol 是 0 / 1 列(开放形状),它返回填充但其他正确的形状

当我手动将形状设置为 0 它返回正确的开放形状,但我需要这个形状因观察而异

创建随机空间数据的数据框

library(sf)
library(tmap)
library(dplyr)

newDf <- data.frame(location=letters[1:30],
                lat=32+runif(30,0.01,0.03),
                lon=-97+runif(30,.01,.03)) %>%
                mutate(rowID=1:n(),
                reservoir=case_when(rowID<=15 ~ 'Codell',
                TRUE ~'Niobrara'))

newSf <- st_as_sf(newDf,coords=c('lon','lat'),crs=4326)

分配形状值/数字索引

shapes <- c('Niobrara'='circle',
            'Codell'='square')

shapeVals <- c('circle'=21,'square'=22,'triangleup'=24,'diamond'=23,'triangleDown'=25)
borderVals <- c('circle'=0,'square'=1,'triangleup'=2,'diamond'=5,'triangleDown'=6)


newSf.fin <- newSf %>% mutate(shapeType = shapes[reservoir],
                           shapeCol = as.factor(shapeVals[shapeType]),
                           borderCol = as.factor(borderVals[shapeType]))

newSf.fin %>% select(borderCol) # 0 and 1 / Open Shapes

#returns filled shapes despite shape column only referencing open values
tm_shape(newSf.fin) + tm_dots(shape='borderCol',size=2)

#returns open shapes by manually setting shape value
tm_shape(newSf.fin) + tm_dots(shape=0,size=2)

我知道这可以通过映射/循环来缓解,但色标会更成问题和困难。有没有办法根据列值实现正确的开放形状?

【问题讨论】:

    标签: r tmap


    【解决方案1】:

    我不是tmap 专家,但这似乎是一种误解。

    在文档中提到了shape 参数:

    符号的形状。直接形状规范或数据 映射到由形状指定的符号的变量名称 争论。请参阅形状规范的详细信息。

    关于shapes 参数它说:

    符号形状的调色板。仅适用于 shape 是 (vector of) 分类变量。请参阅形状规格的详细信息。经过 默认采用填充符号 21 到 25。

    因此,当您执行shape = 0 时,您正在执行直接的形状规范。这就是它起作用的原因。当您使用变量名时,您需要将其类别映射到shapes-argument。你没有这样做,所以它需要 21 和 22,这是它的默认形状,它们是实心正方形和实心圆形。

    这对我来说是这样的:

    tm_shape(newSf.fin) + tm_dots(shape= 'borderCol',size=2, shapes = c(1, 0))
    

    【讨论】:

      猜你喜欢
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多