【问题标题】:R tmap modify legends dynamically to prevent overlapping legend valuesR tmap 动态修改图例以防止图例值重叠
【发布时间】:2020-06-15 19:14:51
【问题描述】:

有没有办法动态防止 tmap 中图例中的值重叠?

举个例子:

library(tmap)
data("World")
tm_shape(World) +
tm_polygons("HPI", n=7)

图例并没有明确说明 15、20、25、30、35 或 40 属于哪个类别值。

一个解决方案是这样的:

 tm_shape(World) +
 tm_polygons("HPI", n=7,
   labels = c("0 to 15", ">15 to 20", ">20 to 25", ">25 to 30", ">30 to 35", ">35 to 40", ">40 to 45"))

但是,每次类别数量有不同的n 值时,您显然必须手动更改此值。

无论在地图中如何使用类别,都可以自动生成类似的输出吗?

【问题讨论】:

    标签: r maps legend tmap


    【解决方案1】:

    以下代码从闭区间(即 >=)创建一个方括号,并为开区间(即 legend.format 参数中阅读更多详细信息。

    library(tmap)
    #> Warning: replacing previous import 'sf::st_make_valid' by
    #> 'lwgeom::st_make_valid' when loading 'tmap'
    data("World")
    tm_shape(World) +
      tm_polygons("HPI", n = 7, legend.format = list(scientific = TRUE, format = "f"))
    

    reprex package (v0.3.0) 于 2020 年 3 月 3 日创建

    【讨论】:

    • 如果没有其他信息,就无法理解区间的关键。显示的间隔仍然重叠。
    • @PeterPearman,很抱歉,我不明白您的评论。为什么说间隔是重叠的?例如,第一个区间表示 HPI 大于等于 10 但小于 15 的区域,第二个区间表示 HPI 大于或等于 15 但严格小于 20 的区域,依此类推。
    • @PeterPearman 你的意思是理解 [ 和 ) 在这种情况下的区别是什么意思? stackoverflow.com/questions/4396290/…
    • 是的,[ 和 } 可以表示区间,但并不明显,需要解释。这是一种变通方法,一种非标准的表示法,永远不会被出版所接受。把它和你的解释放在你的网页上。美好的。但是应该能够以一种明显的方式表示区间,使用标准符号系统,以需要解释的方式表示区间,当有明显的方法来正确表示区间时,这根本是不够的。对于计数数据,间隔为 10,14; 15,19; 20,24。对于实数,使用 等。主要 tmap 限制。
    【解决方案2】:

    我已经设法通过使用:

    legend.format = list(format = "f", text.separator = "<"))
    

    【讨论】:

    • 我建议 legend.format = list(format = "f", text.separator = "to
    猜你喜欢
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    • 2019-11-23
    • 2018-04-06
    • 2015-07-02
    • 2021-02-13
    • 2019-06-12
    • 2021-12-17
    相关资源
    最近更新 更多