如何在R的base plot图例中添加百分比单位?
在R Base Plot中给热力图图例添加%单位
要给base plot绘制的栅格热力图图例添加百分比单位,核心思路是自定义图例的标签文本,具体可以通过两种方式实现:
方法1:手动添加自定义图例
先绘制不带默认图例的热力图,再用legend()函数手动生成带%的图例:
# 加载raster包(如果未加载) library(raster) # 获取栅格数据的数值范围 val_range <- range(values(heat_all_rast), na.rm = TRUE) # 定义图例刻度(可根据需求调整数量和精度) breaks <- seq(val_range[1], val_range[2], length.out = 5) # 将刻度转换为带%的标签(如果数值是小数形式,比如0.5代表50%,则用paste0(round(breaks*100,1), "%")) labels <- paste0(round(breaks, 1), "%") # 绘制热力图,关闭默认图例 plot(heat_all_rast, col = topo.colors(70), legend = FALSE) # 添加自定义颜色条图例(位置可改为"bottom"/"top"/"left"等) legend("right", legend = labels, fill = topo.colors(length(breaks)-1), # 刻度数比颜色区间数多1 bty = "n", # 去掉图例边框 title = "百分比")
方法2:修改默认图例的标签
利用raster::plot()的axis.args参数,直接替换默认图例的刻度标签:
library(raster) val_range <- range(values(heat_all_rast), na.rm = TRUE) breaks <- seq(val_range[1], val_range[2], length.out = 5) labels <- paste0(round(breaks, 1), "%") # 绘制热力图时指定自定义刻度和标签 plot(heat_all_rast, col = topo.colors(70), axis.args = list( at = breaks, # 指定刻度位置 labels = labels # 指定带%的标签 ))
注意事项
- 如果你的栅格数值是小数形式(比如0.3代表30%),需要把标签改为
paste0(round(breaks*100, 1), "%") - 可以调整
breaks的length.out参数来控制图例刻度的数量 bty = "n"用于移除图例的边框,可根据需求保留或删除
内容的提问来源于stack exchange,提问作者fishlakeslimno
相关产品推荐
相关产品推荐

