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

如何用gnuplot基于三角形网格数据绘制正确的2D热力图?

解决gnuplot绘制三角形网格热力图的问题

核心问题分析

你之前的尝试未成功,核心是对gnuplot处理多边形填充的逻辑理解有误:

  • pm3d默认针对四边形网格设计,不指定三角形模式的话,程序无法正确识别三角形填充区域;
  • 修改后的file2.dat把三角形拆成了边,本质是绘制线条而非填充多边形,自然只有边缘着色。

两种可行的解决方案

方法1:用polygons直接填充三角形(推荐,更直观)

gnuplot的polygons样式可直接识别空行分隔的多边形顶点块,结合颜色映射(palette)就能实现按温度值填充颜色。

步骤1:配置基础参数
# 设置颜色映射(可自定义,示例中10对应蓝色、20对应红色)
set palette defined (10 "blue", 20 "red")
# 关闭图例,设置坐标轴标签
set key off
set xlabel "X"
set ylabel "Y"
步骤2:绘制填充三角形

直接使用你的原始数据file1.dat(每个三角形3个顶点,空行分隔):

plot 'file1.dat' using 1:2:3 with polygons fillcolor palette notitle

该命令会把每个空行分隔的3个顶点识别为一个三角形,用第三列的温度值匹配palette中的颜色填充。

方法2:配置pm3d支持三角形网格

如果一定要用pm3d,需开启三角形模式,并指定顶点颜色的计算方式:

set pm3d map triangles corners2color mean
# corners2color可选mean/min/max,示例中三角形顶点温度一致,选哪个结果都相同
set palette defined (10 "blue", 20 "red")
set key off
splot 'file1.dat' using 1:2:3 with pm3d notitle
  • triangles参数告诉pm3d将每个空行分隔的顶点块当作三角形处理;
  • corners2color mean表示用三角形三个顶点的温度平均值确定填充色。

验证效果

用上述任意一种方法运行后,会看到:

  • 第一个三角形(顶点温度10)填充为蓝色;
  • 第二个三角形(顶点温度20)填充为红色,完全符合热力图需求。

内容的提问来源于stack exchange,提问作者Christophe Martin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 18:47:15