2012-05-25 200 views
1

我想在Gnuplot中繪製矩陣,因爲我會在Matplotlib中使用imshow。這意味着我只想繪製實際的矩陣值,而不是值之間的插值。我已經能夠做到這一點,試圖用gnuplot繪製矩陣

splot "file.dat" u 1:2:3 ps 5 pt 5 palette 

這種方式,我們都在講程序使用5號和空間的列在文件中1,2和3,使用方格點很窄的縫隙。然而,我的數據集中的點不是均勻分佈的,因此我得到了不連續性。

任何人都可以在gnuplot中繪製矩陣值的方法,而不管xa和y軸上的間距是否均勻?

+0

是你的問題,你不能讓gnuplot繪製矩陣不均勻的間距,或點之間的不均勻間距產生的差距? – andyras

+0

我的問題是空白顯示在情節。所以我需要一個過程來繪製沒有間隙或插值的矩陣。 – ricoamor

回答

0

請參閱輸入數據here的說明。您可能必須相應地更改數據文件的格式。

+0

謝謝,但這不是一個關於如何格式化數據的問題。這是關於繪製使用(M-1)x(N-1)幀的MxN矩陣或僅繪製完整矩陣的區別。這就是matplotlib中的imshow所能做到的。 – ricoamor

1

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認爲平均角度通常「足夠接近」,但是可以讓你選擇改變它。

+0

謝謝,但這不能解決插值問題。我已經以正確的格式存儲了我的數據。問題是,用你描述的一個MxN矩陣的程序,我們會用(M-1)x(N-1)幀恢復一個繪圖,顏色對應於矩陣值之間的插值。這不是我想要的。我只想用一個等效的程序來繪製MxN點。 – ricoamor

+0

@ricoamor - 繪製圖像(後者)繪製MxN點。 – mgilson

+0

@ricoamor - 我已經使用pm3d解決方案進行了編輯,我確信它會起作用......但它需要您付出更多努力。我試圖解釋爲什麼會出現這種情況 - 希望這很清楚。 – mgilson