【问题标题】:R - tmap: Add thick border and transform counties with NAs to diagonal stripesR - tmap:添加粗边界并将具有 NA 的县转换为对角线条纹
【发布时间】:2020-04-09 05:46:10
【问题描述】:

我正在尝试使用 tmap 在 R 中重新创建以下地图:

第一张地图:

第二张地图:

我的问题是:

  1. 如何将具有 NA 的县从灰色(我认为这是 tmap 中的默认值)转换为第一张地图中显示的斜条纹?

  2. 如何像第二张地图一样添加一个粗黑边框来显示整个 NC 状态?

目前我的R代码如下:

tm_shape(dataframe) +

tm_polygons("variable1", id = "county", palette = "Greens", border.col = "black") +

tm_layout(panel.labels = c("ABCD"), legend.position = c("left"))

注意:border.col = "black" 将每个县的边界涂成黑色;但是我希望整个州的边框更厚。

谢谢!

【问题讨论】:

    标签: r tmap


    【解决方案1】:

    安装并加载 tigris 包

        library(tigris)
    

    获取包含所有状态形状的空间对象

        state <- tigris::states() 
    

    子集 SpatialPolygonsDataFrame 以访问 NC 的形状

        NC <- state[state@data$NAME == "North Carolina", ]
    

    获取一个包含北卡罗来纳州所有县的空间对象

        ncCounties <- counties("North Carolina", cb = TRUE)
    

    使用 qtm()、tm_shape() 和 tm_borders() 函数

        library(tmap)
        qtm(ncCounties, 
            fill = NULL, 
            fillCol = "GEOID",
            borders = "#515151", )+
       tm_layout(frame = FALSE)+
       tm_shape(NC)+
       tm_borders(lwd = 3, 
             col = "black")
    

    【讨论】:

    • 感谢您的回复!我使用“map + tm_polygons("NC",border.alpha = 1.0) 添加了它,但收到一条警告消息,提示“一个 tm 图层具有重复的图层类型,已省略。要绘制相同类型的多个图层,请使用多个图层组(即在每个图层之前指定 tm_shape)。我确实指定了 tm_shape(dataframe) 来获取我的文件“地图”,所以我不知道消息的含义。
    • 我无法完全复制代码中的数据框对象,但也许我对潜在答案的编辑会有所帮助
    • @SusanSwitzer 嗨,Susan,感谢您回答这个问题。我知道已经有一段时间了,但我有一个关于你的例子的后续问题。我正在尝试绘制与您的示例类似的地图。问题是,当我绘制多个状态时,状态之间的边界 已被删除。我想做类似于此参考link 的事情。您对此有什么建议/建议吗?
    • 您的数据是什么样的?你传递给填充参数的是什么?
    猜你喜欢
    • 2015-09-23
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    相关资源
    最近更新 更多