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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:36:05