如何在gnuplot 4.6中正确处理3D数据并创建热图?

时间:2014-11-10 17:26:58

标签: gnuplot heatmap

我有几天来自八个不同非等距深度的温度数据,我想将其绘制为热图。据我所知,我有两种选择。我可以使用" with image"但是假定等距点使得只有8像素的薄带或者我可以使用需要适当网格的pm3d(我不确定什么是正确的网格)。我发现dgrid3d可以为我制作网格,但由于某种原因,它会消除对深度的任何依赖。有人可以向我解释一下这种行为吗? 这是我使用的代码和数据。 https://docs.google.com/file/d/0B2TfUgjtGRVReV9ocFVvM1BKd2M

set timefmt "%Y-%m-%d %H:%M:%S"
set xdata time

set view map
set dgrid3d

splot './Data/MO-03t_.txt' every ::2 u 1:3:4 with pm3d

1 个答案:

答案 0 :(得分:1)

dgrid3d未绘制您的数据。相反,根据您的数据计算二维样条曲线。然后,gnuplot创建一个(默认情况下)10x10矩阵,并使用从样条插值插值的值填充它。然后绘制该矩阵。

但我还有其他解决方案:

set timefmt "%Y-%m-%d %H:%M:%S"
set xdata time

# for the nice colors
set pm3d

# For debugging: place ticmarks only vor values with data 
set ytics (0.02, 0.04, 0.06, 0.11, 0.31, 0.41, 0.61, 0.91)

plot  './Data/MO-03t_.txt' every ::2 u 1:3:(1800):($3<0.2?.005:0.05):4  w boxxyerrorbars fs solid lc palette

boxxerrorbars ... lc palette需要using <x>:<y>:<deltaX><deltaX>:<z>

delta值是盒子宽度的一半,即它表示从x-deltaX绘制一个框; y-deltaY到x + deltaX; y + deltaY用于每个数据点。

此处,方框的宽度为3600秒,高度为0.1或0.01,具体取决于y值。

结果如下:

enter image description here

但是,你仍然可以提高盒子的高度。

而不是4 + 1列,您还可以使用

传递6 + 1列

using <x>:<y>:<xlow>:<ylow>:<xhigh>:<yhigh>:<z>

这里,框的边框是绝对值,而不是与x-y值的距离。