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

如何在gnuplot的2D强度图上添加图案填充遮罩(边界区域)

解决方案:用Gnuplot叠加强度图与不可访问区域填充

我之前也碰到过类似的需求,用Gnuplot的图层叠加+条件筛选就能完美解决,具体步骤和命令如下:

1. 基础参数配置(可选但推荐)

先做一些基础设置,保证绘图比例、颜色适配你的数据场景:

# 设置正方形画布,避免图像被拉伸变形
set size square

# 自动从掩码文件读取最大x/y值,不用手动输入范围
stats 'mask.dat' nooutput
set xrange [0:STATS_max_x]
set yrange [0:STATS_max_y]

# 自定义强度图的调色板(可根据你的数据区间调整颜色)
set palette defined (0 "white", 30 "cyan", 70 "orange", 100 "darkred")
set cblabel "Diffusion Intensity"  # 给颜色条加标签

2. 核心叠加绘图命令

用一条plot命令同时绘制两层内容:底层的强度彩色图,上层的不可访问区域填充图案:

plot \
    # 第一层:绘制物质扩散的强度图,沿用你原来的命令逻辑
    'data.dat' using 1:2:3 with image notitle, \
    # 第二层:筛选并填充不可访问区域(value=1的部分)
    'mask.dat' using 1:2:(1):(1):4 \
        with boxes \
        fs pattern 6 lc "gray" alpha 0.6 \  # 图案样式、颜色、透明度
        notitle \
        where ($4 == 1)  # 只处理掩码文件中value为1的区域

关键参数说明

  • using 1:2:(1):(1):4:前两列对应x/y坐标,(1):(1)是填充方块的宽高(如果你的网格步长不是1,替换成实际步长即可),第4列是掩码的value值。
  • fs pattern 6:选择第6种填充图案(Gnuplot支持1-9号不同图案,可自行测试替换数字找喜欢的样式)。
  • alpha 0.6:设置图案透明度,避免完全盖住下层的强度图,方便同时观察扩散强度和不可访问区域。
  • where ($4 == 1):精准筛选出不可访问区域,跳过value=0的可访问区域。

额外优化小技巧

  • 如果你的坐标是网格中心而非左下角,可给x/y坐标加0.5偏移,让方块对齐网格:using ($1+0.5):($2+0.5):(1):(1):4。
  • 想给填充图案加边框的话,可提前加一句:set style fill pattern 6 border lt -1。

内容的提问来源于stack exchange,提问作者Learning from masters

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:47:16