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