【问题标题】:R - Plot with tmap() does not display the legendR - 使用 tmap() 绘图不显示图例
【发布时间】:2018-04-06 19:20:19
【问题描述】:

我使用tmap 包。我用qtm() 函数绘制了一张地图,但没有显示图例。确实,我知道图例会自动显示,除非您指定隐藏它。

我也尝试使用tm_add_legend() 的解决方法,但它不起作用。

这是我的代码:

library(sp) ; library(rgdal) ; library(rgeos) ;
library(tmap) ; library(maptools)

Directory <- ""

MapFrance <- readOGR(dsn = paste0(Directory, "Departements"),  layer = "DEPARTEMENT")

MapFrance@data$Score <- round(runif(96, min = 1, max = 10), 0)

brk <- c(1, 2.5, 5, 7.5, 10)
ClassScore <- classIntervals(MapFrance@data$Score, style = "fixed", fixedBreaks = brk)
Palette <- brewer.pal(length(brk) - 1, "Greens")

MapFrance@data$Categorie <- as.character(cut(MapFrance@data$Score,
                                             breaks = ClassScore$brks,
                                             labels = Palette,
                                             include.lowest = TRUE))

ExampleData <- MapFrance[MapFrance$CODE_REG == "11", ]

qtm(ExampleData, fill = "Categorie", text = "CODE_DEPT", text.size = "AREA", style = "gray",
    text.root = 5, fill.title = "Opinion scale")

以及地理数据的链接: https://drive.google.com/file/d/1wksMnkufQPdOfSbhWoZbPKMqlcLcll_j

【问题讨论】:

  • 补充说明:情节的标题也没有显示。

标签: r plot tmap


【解决方案1】:

具有三个优点的解决方案:

  • 解决图例问题
  • 解决标题问题
  • 避免在绘图之前调用classIntervals 来离散化连续变量

代码:

library(sp) ; library(rgdal) ; library(rgeos) ;
library(tmap) ; library(maptools)

Directory <- ""

MapFrance <- readOGR(dsn = paste0(Directory, "Departements"),  layer = "DEPARTEMENT")

MapFrance@data$Score <- round(runif(96, min = 1, max = 10), 0)

ExampleData <- MapFrance[MapFrance$CODE_REG == "11", ]

brk <- c(1, 2.5, 5, 7.5, 10)

tm_shape(ExampleData) +
  tm_fill("Score",
          title = "Satisfaction score",
          style = "fixed",
          breaks = brk,
          palette = brewer.pal(length(brk) - 1, "Greens"),
          auto.palette.mapping = FALSE) +
  tm_borders() +
  tm_text("CODE_DEPT",
          size = "AREA",
          root = 10) +
tm_layout(main.title = "Satisfaction score in France",
          legend.position = c("left", "bottom"))

剧情:

【讨论】:

    猜你喜欢
    • 2019-06-12
    • 2020-01-31
    • 2014-10-12
    • 2019-11-23
    • 2016-07-19
    • 1970-01-01
    • 2020-12-07
    • 2019-03-09
    • 2014-08-21
    相关资源
    最近更新 更多