为tm_symbols设置累计冲突值分级(breaks)失败求助
问题解决:tmap中为累计冲突符号设置分级断点
问题分析
从附图可见,当前符号大小的图例显示为连续数值,而非你预期的分级区间,代码无法正常运行的核心原因是**tm_symbols中针对size变量的分级参数用错了**:breaks是给颜色变量(col参数)设置分级的,控制size变量分级的参数是size.breaks。
修正后的代码
# 可选:自定义图例区间标签,让展示更清晰 size_labels <- c("<1000", "1000-2000", "2000-3000", "3000-4000", ">4000") tm_shape(test) + tm_polygons(col="vcidrought_type", pal =c("#BCE395","#21908CFF", "#3B528BFF", "#440154FF", "#000004FF"), levels = labels, title="Drought types") + tm_layout(main.title = "VCI drought type in Sub-Saharan Africa 1997-2010", main.title.position = "center", frame= FALSE) + tm_shape(shp_union) + tm_symbols(col = "red", border.col = "black", size = "total_conflicts", size.breaks = c(-Inf, seq(1000, 4000, by = 1000), Inf), size.labels = size_labels, # 启用自定义标签 title.size = "Cumulated conflicts")
关键说明
- 替换
breaks为size.breaks,这是tmap中专门控制size变量分级断点的参数; - 若不需要自定义标签,可删除
size.labels行,tmap会自动基于断点生成区间标签; - 确保
size.breaks的断点数量和size.labels的标签数量一致(这里都是5个区间对应5个标签)。
内容的提问来源于stack exchange,提问作者Shunrei
相关产品推荐
相关产品推荐

