【问题标题】:Change tmap legend from symbol based to fill based将 tmap 图例从基于符号更改为基于填充
【发布时间】:2019-07-27 00:09:01
【问题描述】:

我有一个包含以下代码的 tmap:

  map <- tm_shape(gb_map)+tm_polygons(border.col = 'transparent', col='black')+
  tm_shape(data) +
    tm_dots("pred",palette="OrRd",
            style = "fisher",
            border.col='transparent', 
            title = "Predicted Sales",
            n=5, size =0.03) +
    tm_layout("Predicted Sales", title.size=1, legend.outside = T)

目前处于 tmap 视图模式。

我希望更改图例,使图例用正方形表示颜色,因为现在的符号太小了。有什么方法可以保持一切不变,只是将图例更改为正方形? (我不能增加符号的大小,因为我希望点在地图上显得很小)手动添加图例会导致我丢失我不希望的断点,因为我正在使用 'fisher' 来确定断点。

可以改成这样的传奇吗?

谢谢!

【问题讨论】:

    标签: r tmap


    【解决方案1】:

    您将图例显示为点,因为您使用的是tm_dots。改用tm_fill 会自动为您提供基于正方形的图例。请提供一些数据,以便我可以尝试您的代码并提出合适的措施。在此之前,请将您的多边形数据读取为

    library("rgdal")
    Output.Areas <-  readOGR(".", "shapefile_name")
    

    然后读取你的数据文件

    data <- read.csv("File_name.csv")
    

    现在您将数据连接到 shapefile

    merged <- merge(Output.Areas, data, by.x="NAME_1", by.y="NAME_2")
    

    数据 (NAME_2) 和 Output.Areas shapefile (NAME_1) 的公共字段是 NAME_1 和 NAME_2。 现在tm_fill 将自动为您提供基于正方形的图例

    tm_shape(merged)+
      tm_borders(alpha=.4) +
      tm_fill("pred",palette="OrRd",
              style = "fisher",
              title = "Predicted Sales")
    

    【讨论】:

      【解决方案2】:

      我认为现在回答这个问题为时已晚。尽管如此,我认为你需要这样的东西:

      library(tidyverse)
      library(sf)
      library(tmap)
      
      nc = st_read(system.file("shape/nc.shp", package="sf"))
      
      Breaks <- c(0, 2000, 4000, 6000, 31000)
      Labels <- c("0 - 2000", "2000 - 4000", "4000 - 6000", ">6000")
      
      tm_shape(nc) + 
       tm_polygons(col="BIR79", title = "Births 1979 - 84", palette = "YlGnBu",
                             breaks = Breaks, labels = Labels) + 
      tm_layout(legend.position = c(0.01,0.65),
                scale=0.65,
                legend.frame = T,
                bg.color = "lightblue") + 
      tm_compass(size = 5, type = "rose", lwd = 3) + 
      tm_scale_bar(breaks = c(0,50,100,150,200),size = 1, position = c(0.06,0),
                   lwd = 3)
      

      【讨论】:

        猜你喜欢
        • 2014-08-07
        • 2020-03-10
        • 1970-01-01
        • 2021-01-15
        • 1970-01-01
        • 2016-07-03
        • 1970-01-01
        • 1970-01-01
        • 2016-09-01
        相关资源
        最近更新 更多