You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

tmap中tm_dots如何通过指定breaks手动控制点大小?

tmap中tm_dots手动控制点大小的问题说明与解决

为什么size参数没有类似col的手动breaks控制?

tmap里tm_dots()的size和col参数设计逻辑不一样:

  • col参数针对颜色映射,内置了多种分箱样式(包括style="fix"),因为颜色的离散化分类是很常见的可视化需求,所以直接支持手动指定breaks。
  • size参数默认是连续数值到点大小的线性映射,tmap的设计里没有给它加style这类分箱参数,因为大小更多是用来直观体现数值的连续变化,而非强制离散分档。

手动控制点大小的解决方法

要按指定breaks控制点大小,得先把数值变量提前转成离散分类,再传给size参数:

  1. 用cut()函数将数值变量按目标breaks分箱:
    # 假设你的数据框是df,目标数值变量是variable
    df$size_category <- cut(df$variable, breaks = c(45, 60, 75, 90), include.lowest = TRUE)
    
  2. 在tm_dots()中使用这个分类变量,并用sizes参数指定每个类别对应的点大小:
    tm_dots(size = "size_category", sizes = c(0.5, 1, 1.5, 2))
    
    注意sizes的数值数量要和分箱后的类别数一致。

关于sizes.legend的说明

sizes.legend仅用于调整图例中点的显示尺寸,和地图上实际点的大小没有关联,所以之前用它无法改变地图点大小是正常的。

内容的提问来源于stack exchange,提问作者user36756

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:55:17