【问题标题】:Customise dot maps in R using tmap使用 tmap 在 R 中自定义点图
【发布时间】:2019-07-29 23:23:09
【问题描述】:

我有一个要映射的点数据集。我是tmap 的新手,并且一直在玩它,但无法获得我想要的输出。我在做以下事情(如果可能的话):

  • 仅显示指定 area 的分数(例如 A002)
  • 根据 value 为点着色并指定这些颜色是什么(例如 0=绿色、1=蓝色和 2=红色)
  • 在地图内显示带有自定义标题的图例(例如图例编号)
  • 允许在图例中放置自定义文本(例如 0 [某些文本];1 [某些文本];2 [某些文本]
  • 当您将鼠标悬停在某个点上时,将显示 label 中的条目
  • 当您单击一个点时,所有属性都会显示(例如代码、区域、值和标签的值)

这是我一直在使用的代码:

require("data.table")
require("sf")
require("tmap")

dt1 <- data.table(
  code=c("A00111", "A00112","A00113","A00211","A00212","A00213","A00214","A00311","A00312"),
  area=c("A001", "A001","A001","A002","A002","A002","A002","A003","A003"),
  x=c(325147,323095,596020,257409,241206,248371,261076,595218,596678),
  y=c(286151,284740,335814,079727,084266,078283,062045,333889,337836),
  value=c(0,1,2,0,1,1,2,2,2),
  label=c("A00 111", "A00 112","A00 113","A00 211","A00 212","A00 213","A00 214","A00 311","A00 312")) 

sf1 <- st_as_sf(dt1, coords = c("x","y"), crs=27700, na.fail=FALSE)

tmap_mode("view")

map <- tm_shape(sf1) + tm_dots(group = "value", breaks = c(0,1,2,Inf), palette = c("aquamarine2", "cornflowerblue", "brown1"))

map

【问题讨论】:

    标签: r visualization tmap


    【解决方案1】:

    只需对您的代码稍作更改,我就能获得您想要的大部分观点。

    主要变化有:

    • group 重构为col(我想这是你最大的绊脚石)

    • labels中添加三个图例标签的向量

    • title中添加图例标题

    • id中添加弹出窗口标题(弹出窗口顶部的粗体大项)

    • popup.vars 中添加弹出窗口“also-rans”(里面的小灰色项目);请注意我如何将它们重命名为包含冒号(否则您最终会使用您的字段名称)

    require("data.table")
    require("sf")
    require("tmap")
    
    dt1 <- data.table(
      code=c("A00111", "A00112","A00113","A00211","A00212","A00213","A00214","A00311","A00312"),
      area=c("A001", "A001","A001","A002","A002","A002","A002","A003","A003"),
      x=c(325147,323095,596020,257409,241206,248371,261076,595218,596678),
      y=c(286151,284740,335814,079727,084266,078283,062045,333889,337836),
      value=c(0,1,2,0,1,1,2,2,2),
      label=c("A00 111", "A00 112","A00 113","A00 211","A00 212","A00 213","A00 214","A00 311","A00 312")) 
    
    sf1 <- st_as_sf(dt1, coords = c("x","y"), crs=27700, na.fail=FALSE)
    
    tmap_mode("view")
    
    map <- tm_shape(sf1) + tm_dots(col = "value", 
                                   breaks = c(0,1,2,Inf),
                                   labels = c("some text A", "some text B", "some text C"),
                                   id = "label", # bold in popup
                                   popup.vars = c("area:" = "area", "code:" = "code"), # light in popup
                                   palette = c("aquamarine2", "cornflowerblue", "brown1"),
                                   title = "Lo & behold: a legend!")
    
    map
    

    弹出窗口不容易截屏,但似乎可以工作:)

    【讨论】:

    • 完美。谢谢。此外,指定 popup.vars = TRUE 意味着所有属性都显示在弹出窗口中(不知道我之前是怎么错过的!)。
    • 很高兴为您服务!我个人更喜欢单独列出 popup.vars,因为 1)我的变量往往有神秘的名称,2)我的数据框包含很多 var。但我不得不承认,Tennekes 的家伙很聪明! :)
    猜你喜欢
    • 2021-10-19
    • 2018-06-21
    • 2020-02-26
    • 2017-06-24
    • 2021-12-07
    • 2020-04-06
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    相关资源
    最近更新 更多