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

如何在tmap制作的choropleth分级统计图中对整数分段取整

实现整数分段取整的两种方案

方案1:手动指定分级断点(推荐,分段逻辑和显示完全一致)

你当前使用的style="equal"是tmap自动生成等距分段,自动计算的断点大概率不是整千整数。你可以先根据数据范围自定义符合要求的整千断点,再传入绘图函数,从根源上保证分段符合预期。
完整修改代码如下:

label <- labels_rec %>%
  filter(VAR == sgf_var & TABLEAU == tab)

# 新增:计算整千等距断点,步长可按需调整
min_val <- floor(min(sgf_polyg$V137, na.rm = TRUE)) %/% 1000 * 1000
max_val <- ceiling(max(sgf_polyg$V137, na.rm = TRUE)) %/% 1000 * 1000
custom_breaks <- seq(min_val, max_val, by = 3000) # 步长3000对应你示例的间隔

map <- tm_shape(sgf_polyg) +
  tm_polygons(col = "V137", 
            breaks = custom_breaks, # 替换原有的style="equal"参数
            title="sgf_var",
            textNA = "Valeur manquante", 
            legend.hist = TRUE,
            legend.format=list(fun=function(x) formatC(x, digits=0, format="f"), 
                               text.separator= " 到 ")) + # 把分隔符改成你需要的“到”
  tm_borders("#9E9E9E") +
  tm_layout(main.title = label$LIBELLE, main.title.size = 0.5,legend.outside = TRUE, 
            legend.title.size = 0.7, legend.hist.width = 1) 

如果需要调整取整粒度(比如精确到百位)或者分段步长,修改对应计算逻辑里的数值即可。

方案2:仅修改标签显示的取整逻辑

如果你不想改动原有自动分段的逻辑,只需要把显示的标签做取整处理,仅修改legend.format内的自定义函数即可:

legend.format=list(fun=function(x) {
  # 先把断点取整到1000的倍数,可按需调整取整粒度
  rounded_break <- round(x / 1000) * 1000
  formatC(rounded_break, digits=0, format="f")
}, 
text.separator= " 到 ")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:45:03