非均匀网格上带Gnuplot的热图

非均匀网格上带Gnuplot的热图,gnuplot,heatmap,Gnuplot,Heatmap,我想在非均匀网格的基础上用gnuplot创建一个热图,这意味着我的x轴箱子没有相同的宽度,我不知道怎么做,因为当我用例如“with image”来绘制数据时,我得到的是大小一致的盒子,它们与我的坐标根本不对应(因为“image”将数据视为矩阵(我想是这样)。所以我想找到一种方法来得到非均匀的盒子,它们也被放置在笛卡尔平面的正确位置 我的数据如下所示: 1 1 0.2 1 2 0.8 1 3 0.1 1 4 0.2 2 1 0.7 2 2 0.2 2 3 0.3 2 4 0.1 5 1 0.2

我想在非均匀网格的基础上用gnuplot创建一个热图,这意味着我的x轴箱子没有相同的宽度,我不知道怎么做,因为当我用例如“with image”来绘制数据时,我得到的是大小一致的盒子,它们与我的坐标根本不对应(因为“image”将数据视为矩阵(我想是这样)。所以我想找到一种方法来得到非均匀的盒子,它们也被放置在笛卡尔平面的正确位置

我的数据如下所示:

1 1 0.2
1 2 0.8
1 3 0.1
1 4 0.2

2 1 0.7
2 2 0.2
2 3 0.3
2 4 0.1

5 1 0.2
5 2 0.4
5 3 0.1
5 4 0.9

7 1 0.3
7 2 0.2
7 3 0.9
7 4 0.6
如果我在Gnuplot上运行这个命令

set xrange [1:10]
p 'mydata.dat' with image
我得到了一张16个盒子的图片,它们的宽度和高度相同(显然我在Stackoverflow上没有足够的“声誉”来发布图片,否则我会),但理想情况下,我希望这些盒子有不同的宽度,并且在飞机上的正确位置。例如,第一个框的范围应为1到2,第二个框的范围应为2到5,第三个框的范围应为5到7,最后一个框的范围应为7到10(这就是我编写
set xrange[1:10]
的原因)

谁能帮我一下吗?多谢各位

最简单(可能唯一可行)的方法是添加一些虚拟数据点并使用
splot。。。使用pm3d
。此打印样式处理具有常规四边形的热图

image
打印样式为每个数据点打印一个方框(一个大像素),而
pm3d
将每个数据点作为一个或多个四边形的角。每个四边形的颜色由角的值确定,并可使用
set pm3d corners2color
进行调整

因此,在您的情况下,您需要将
4x4
矩阵展开为
5x5
矩阵(展开到右侧和顶部),但选择左下角以确定颜色
set pm3d Corners2 color c1

然后,更改的数据文件为:

1 1 0.2
1 2 0.8
1 3 0.1
1 4 0.2
1 5 0.5

2 1 0.7
2 2 0.2
2 3 0.3
2 4 0.1
2 5 0.5

5 1 0.2
5 2 0.4
5 3 0.1
5 4 0.9
5 5 0.5

7 1 0.3
7 2 0.2
7 3 0.9
7 4 0.6
7 5 0.5

10 1 0.5
10 2 0.5
10 3 0.5
10 4 0.5
10 5 0.5
要绘制它,请使用

set pm3d map corners2color c1
set autoscale fix
set ytics 1
splot 'mydata.dat' using 1:($2-0.5):3 notitle
4.6.3的结果是:

通常,虚拟数据点的
z
-值无关紧要,但在上面的脚本中,它应该位于最小值和最大值之间,以允许
set autoscale fix
在色标上正常工作

如果不想手动更改数据文件,可以使用一些脚本,但这是另一个问题。

最简单(可能唯一可行)的方法是添加一些虚拟数据点并使用
splot。。。使用pm3d
。此打印样式处理具有常规四边形的热图

image
打印样式为每个数据点打印一个方框(一个大像素),而
pm3d
将每个数据点作为一个或多个四边形的角。每个四边形的颜色由角的值确定,并可使用
set pm3d corners2color
进行调整

因此,在您的情况下,您需要将
4x4
矩阵展开为
5x5
矩阵(展开到右侧和顶部),但选择左下角以确定颜色
set pm3d Corners2 color c1

然后,更改的数据文件为:

1 1 0.2
1 2 0.8
1 3 0.1
1 4 0.2
1 5 0.5

2 1 0.7
2 2 0.2
2 3 0.3
2 4 0.1
2 5 0.5

5 1 0.2
5 2 0.4
5 3 0.1
5 4 0.9
5 5 0.5

7 1 0.3
7 2 0.2
7 3 0.9
7 4 0.6
7 5 0.5

10 1 0.5
10 2 0.5
10 3 0.5
10 4 0.5
10 5 0.5
要绘制它,请使用

set pm3d map corners2color c1
set autoscale fix
set ytics 1
splot 'mydata.dat' using 1:($2-0.5):3 notitle
4.6.3的结果是:

通常,虚拟数据点的
z
-值无关紧要,但在上面的脚本中,它应该位于最小值和最大值之间,以允许
set autoscale fix
在色标上正常工作


如果您不想手动更改数据文件,可以使用一些脚本,但这是另一个问题。

您应该发布代码,否则它将作为主题关闭。“询问代码的问题必须表明对正在解决的问题的最低理解。包括尝试的解决方案、为什么它们不起作用以及预期的结果。”您应该发布代码,否则它将作为离题关闭。“询问代码的问题必须表明对正在解决的问题的最低理解。包括尝试的解决方案,为什么它们不起作用,以及预期的结果。”非常感谢Christoph,这正是我想要的!非常感谢你,克里斯托夫,这正是我想要的!