首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tm_symbols:如何控制尺寸?

tm_symbols:如何控制尺寸?
EN

Stack Overflow用户
提问于 2022-10-01 08:45:58
回答 1查看 163关注 0票数 0

我对tmap很陌生。我正在使用tm_dots,我希望用一个数值变量来确定点的大小。所以我写了tm_dots(size=“变量”)。我想手动控制指定断点的点的大小。如果我使用sizes.legend,我可以修改图例中的点,但这并不反映在地图上点的大小。

值得注意的是,颜色也很容易实现: tm_dots(col="variable",style="fix",合符= c(45,60,75,90)),但似乎没有可用的大小。我想知道为什么..。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-10-04 07:33:58

你的预期结果是什么?在这个上下文中,tmapsize视为一个连续变量,这就是为什么sizes.legend只修改图例,而不修改点的大小(每个点的variable没有改变)的原因。

代码语言:javascript
复制
library(sf)

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


# Create something in your range
nc_point$variable <- nc_point$NWBIR74/100

library(tmap)

tm_shape(nc_point) +
  tm_dots(size="variable")

代码语言:javascript
复制
tm_shape(nc_point) +
  tm_dots(size="variable",
          sizes.legend = c(0, 45, 60, 75, 90)) +
  tm_layout(title = "Changes only the legend")

col选项的行为有所不同,因为它创建类别(即对连续值进行裁剪),然后绘制类别而不是连续值:

代码语言:javascript
复制
tm_shape(nc_point) +
  tm_dots(col="variable",
          size=2,
          breaks = c(0, 45, 60, 75, 90), pal=hcl.colors(10))

注意传说。因此,如果希望大小与col类似,则可能需要首先对其进行分类(通过cuts),并使用legend.format标记图例。

代码语言:javascript
复制
# Create cuts, levels are the left limit
nc_point$cat <- cut(nc_point$variable,
  breaks = c(0, 45, 60, 75, 90),
  labels = FALSE
)

tm_shape(nc_point) +
  tm_dots(size = "cat", legend.format = list(fun = function(x) {
    c(45, 60, 75, 90)[x]
  }))

希望这对你有帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73916980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档