在gnuplot中绘制3D热图

时间:2013-03-25 19:34:46

标签: gnuplot heatmap

我有一个4D数据。第四列需要表示为颜色强度。其他三列将代表三个不同的轴。我想使用gnuplot生成3D热图。我怎样才能做到这一点?

数据样本:

0 0 0 16

0 0 1 25

0 1 0 27

0 1 1 29

1 0 0 8

1 0 1 44

1 1 0 50

1 1 1 27

1 个答案:

答案 0 :(得分:1)

在gnuplot中生成3D热图与生成2D热图相同,只是向using添加了一个额外的列。换句话说,数据文件列出一系列“扫描”,相邻的“扫描”与四边形连接。 e.g。

x1 y1 z11 c11
x1 y2 z12 c12
x1 y3 z13 c13
...
x1 yN z1N c1N
                 #blank line here
x2 y1 z21 c21
x2 y2 z22 c22
...
x2 yN z2N c2N
                 #blank line here
.
.
.
                 #blank line here
xN y1 zN1 cN1
xN y2 zN2 cN2
...
xN yN zNN cNN

现在您可以使用splot 'datafile' u 1:2:3:4 w pm3d来绘制此内容。

*请注意,沿着特定“扫描”的x值不需要是常数 - 最初可以更容易地以这种方式将其可视化。

作为一个非常简单的示例,我们可以使用++特殊文件:

set xrange [0:2*pi]
set yrange [0:2*pi]
splot '++' using 1:2:2:(sin($1)*sin($2)) with pm3d

您可以通过以下伪代码生成相同的数据文件:

do iy=0, ny
   y = (2*pi/ny)*iy
   do ix=0, nx
      x = (2*pi/nx)*ix
      z = y
      write x,y,z,sin(x)*sin(y)
   enddo
   write blank space
enddo