tmap中tm_dots如何通过指定breaks手动控制点大小?
tmap中tm_dots手动控制点大小的问题说明与解决
为什么size参数没有类似col的手动breaks控制?
tmap里tm_dots()的size和col参数设计逻辑不一样:
col参数针对颜色映射,内置了多种分箱样式(包括style="fix"),因为颜色的离散化分类是很常见的可视化需求,所以直接支持手动指定breaks。size参数默认是连续数值到点大小的线性映射,tmap的设计里没有给它加style这类分箱参数,因为大小更多是用来直观体现数值的连续变化,而非强制离散分档。
手动控制点大小的解决方法
要按指定breaks控制点大小,得先把数值变量提前转成离散分类,再传给size参数:
- 用
cut()函数将数值变量按目标breaks分箱:# 假设你的数据框是df,目标数值变量是variable df$size_category <- cut(df$variable, breaks = c(45, 60, 75, 90), include.lowest = TRUE) - 在
tm_dots()中使用这个分类变量,并用sizes参数指定每个类别对应的点大小:
注意tm_dots(size = "size_category", sizes = c(0.5, 1, 1.5, 2))sizes的数值数量要和分箱后的类别数一致。
关于sizes.legend的说明
sizes.legend仅用于调整图例中点的显示尺寸,和地图上实际点的大小没有关联,所以之前用它无法改变地图点大小是正常的。
内容的提问来源于stack exchange,提问作者user36756
相关产品推荐
相关产品推荐

