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

在R中为NetCDF多面板图色条添加阈值上下的三角形端点

给NetCDF多面板绘图色条添加三角端点(基于poly.image实现)

核心思路是通过自定义色条的多边形顶点,把色条的上下端扩展为三角形,再用poly.image绘制带三角的色条,对应超出阈值的数值范围。

步骤与示例代码

1. 准备数据与基础参数

先读取NetCDF月值数据,设定色条的阈值范围:

library(ncdf4)
library(fields)

# 读取NetCDF文件(12层月值数据)
nc <- nc_open("monthly_data.nc")
var_data <- ncvar_get(nc, "target_variable") # 替换为你的变量名
nc_close(nc)

# 设定色条阈值与三角尺寸
vmin <- -2  # 下限阈值
vmax <- 2   # 上限阈值
tri_height <- 0.2  # 三角的高度,可根据绘图区域调整

2. 构建带三角的色条多边形

以垂直色条为例,定义色条位置后,拼接底部三角、色条主体、顶部三角的顶点坐标:

# 定义垂直色条的位置(右侧区域)
bar_x_left <- 10.5
bar_x_right <- 11
bar_x_mid <- (bar_x_left + bar_x_right) / 2

# 构建完整的多边形顶点矩阵
poly_vertices <- rbind(
  # 底部三角部分
  c(bar_x_left, vmin),
  c(bar_x_right, vmin),
  c(bar_x_mid, vmin - tri_height),
  c(bar_x_left, vmin),
  # 色条主体部分
  c(bar_x_left, vmax),
  c(bar_x_right, vmax),
  # 顶部三角部分
  c(bar_x_mid, vmax + tri_height),
  c(bar_x_left, vmax)
)

3. 绘制多面板图与自定义色条

先绘制12个月的多面板图,再用poly.image叠加带三角的色条:

# 绘制多面板(3行4列)
par(mfrow = c(3, 4), mar = c(2, 2, 2, 4))
for (month in 1:12) {
  image.plot(var_data[,,month], zlim = c(vmin, vmax), axes = FALSE, 
             legend.only = FALSE, main = month.name[month])
}

# 叠加自定义色条
par(new = TRUE, mar = c(0, 0, 0, 0))
# 构建对应数值序列(包含三角的虚拟值)
z_seq <- c(vmin - 1, seq(vmin, vmax, length.out = 100), vmax + 1)
# 构建完整颜色序列(三角用色条两端颜色)
color_pal <- colorRampPalette(c("darkblue", "white", "darkred"))(100)
full_colors <- c(color_pal[1], color_pal, color_pal[100])

# 用poly.image绘制带三角的色条
poly.image(poly_vertices, z = z_seq, col = full_colors, 
           breaks = c(vmin - 1, seq(vmin, vmax, length.out = 100), vmax + 1))

# 可选:给三角添加阈值标签
text(bar_x_mid, vmin - tri_height, labels = paste("<", vmin), adj = 0.5)
text(bar_x_mid, vmax + tri_height, labels = paste(">", vmax), adj = 0.5)

注意事项

  • 如果需要水平色条,只需调整顶点的x、y方向:把三角放在色条的左右两端,修改顶点的x坐标扩展即可。
  • tri_height的数值需要根据绘图的坐标范围调整,避免三角过大或过小。
  • 颜色序列要和数值序列对应,确保超出阈值的三角部分使用色条的端点颜色。

内容的提问来源于stack exchange,提问作者Maria Chara Karypidou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:42:35