Gnuplot不需要X轴和Y轴空间均匀。 (请参阅我的回答中的另一个:https://stackoverflow.com/a/10690041/748858)。我经常处理看起来像x[i] = f_x(i)
和y[j] = f_y(j)
的网格。这是很琐碎的绘制,数据文件只是看起来像:
#datafile.dat
x1 y1 z11
x1 y2 z12
...
x1 yN z1N
#<--- blank line (leave these comments out of your datafile ;)
x2 y1 z21
x2 y2 z22
...
x2 yN z2N
#<--- blank line
...
...
#<--- blank line
xN y1 zN1
...
xN yN zNN
(注意空行)
这样一个数据文件可以被绘制成:
set view map
splot "datafile.dat" u 1:2:3 w pm3d
选项set pm3d corners2color
能用于微调您要为创建的矩形着色哪个角。
另外请注意,你可以做本质上是相同的情节这样做:
set view map
plot "datafile.dat" u 1:2:3 w image
虽然我不使用这一个自己,所以它可能会失败,非等距矩形网格(你会需要尝试它)。
回应您的评论
是,pm3d不会产生(M-1)×(N-1)如你提到在您的评论四边形 - 它需要4个角落,并(通过默认值)平均值来分配一种颜色。你似乎不喜欢这样 - 尽管(在大多数情况下)我怀疑你能够在合理的大M和N(大于20)的情节中分辨出不同。因此,在我们继续之前,您可能会问自己是否真的有必要绘制每点。
这就是说,用一点工作,gnuplot仍然可以做你想要的东西。解决方案是指定要使用特定的角将颜色分配给整个四边形。
#specify that the first corner should be used for coloring the quadrilateral
set pm3d corners2color c1 #could also be c2,c3, or c4.
然后,只需添加您的矩阵的最后一排和最后一列绘制两次(做了一个额外的格点,以容纳更大的数据集。你还没有应用,你还需要改变你的网格值的一半的单元格,以便您的四边形以问题点为中心 - 您如何移动单元格取决于您选择的角落(c1,c2,c3,c4) - 您需要随时随地找出你想要哪一个。
请注意,这里的问题不是gnuplot。这就是说,在给定MxN三元组的情况下,数据文件中没有足够的信息来构造MxN曲面。在每一个点上,你都需要知道它的位置(x,y),它的值(z)以及要绘制的四边形的大小 - 这是比你打包到文件中更多的信息。当然,你可以猜测内部点的大小(只是半路),但外部点没有猜测。 但为什么不只是使用下一个内部点的大小?。这是一个很好的问题,对于矩形网格来说,它(通常)会很好地工作,但这只是一个特例(尽管是常见的) - 对许多其他网格来说,这可能(很可能)失败。重点在于gnuplot认为平均角度通常“足够接近”,但是可以让你选择改变它。
是你的问题,你不能让gnuplot绘制矩阵不均匀的间距,或点之间的不均匀间距产生的差距? – andyras
我的问题是空白显示在情节。所以我需要一个过程来绘制没有间隙或插值的矩阵。 – ricoamor