【问题标题】:tmap tm_add_legend alpha doesn't work for "fill"tmap tm_add_legend alpha 不适用于“填充”
【发布时间】:2020-01-21 10:13:20
【问题描述】:

我正在尝试更改我的图例的 alpha 值以匹配多边形填充的值,但是当我在 tm_add_legend 中指定 alpha 参数时似乎没有发生任何事情。我在这里遗漏了什么非常明显的东西吗?

library(tmap)
library(sf)

nc <- st_read(system.file("shape/nc.shp", package="sf"))

tm_shape(nc) + 
tm_polygons(col = "#326abf", border.col = "white", lwd = 2, alpha = 0.5) +
tm_add_legend(type = "fill", 
              alpha = 0.5,
              labels = "NC",
              col = "#326abf")

【问题讨论】:

    标签: r gis legend sf tmap


    【解决方案1】:

    我不确定在这种情况下 tmap 究竟是如何工作的。但我找到了解决方法。我创建了一个名为mycat 的虚拟变量。然后,我在tm_polygons() 中将此变量用于col,并在palette 中指定您使用的颜色。这样就不用tm_add_legend()了。

    library(dplyr)
    library(sf)
    library(tmap)
    
    mutate(nc, mycat = "one") -> nc
    
    tm_shape(nc) +
    tm_polygons(col = "mycat", 
                palette = "#326abf",
                border.col = "white", lwd = 2, alpha = 0.5,
                title = "",
                labels = "NC") 
    

    【讨论】:

    • 这是一个很好的解决方法,谢谢!我仍然很好奇为什么 alpha 没有做我认为应该做的事情。
    • @geo_rkal 我不熟悉 tmap。但似乎tm_add_legend() 没有链接到tm_polygons()。我的印象是它正在创建一个自定义/手动图例。如果您查看一些 tmap 示例,您不会看到它们使用 tm_add_legend()。在这些示例中,我看到他们实际上像我一样为col 分配了一个变量。在您编写代码的方式中,您手动为col 分配了一种颜色。这就像你在aes() 中有没有fill 在ggplot 中的区别。不知何故 tmap 不喜欢你的方式。
    • @geo_rkal 所以我的结论是使用col,就好像它在ggplot中的aes()中一样。这样,我们就可以创建上面的图形了。我希望这个解释对你有所帮助。
    • 是的,这是有道理的。你说得对,tm_add_legend 做了一个手动图例,但它似乎并没有像我想象的那样接受所有的论点。我会坚持你的方法,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 2018-06-16
    相关资源
    最近更新 更多