2013-10-10 72 views
2

我想創建一個基於非均勻網格的gnuplot的熱圖,這意味着我的x軸箱不具有相同的寬度,我無法弄清楚如何做到這一點,因爲當我用例如「與圖像」繪製我的數據時,我得到的統一大小的框與我的座標根本沒有對應關係(因爲「圖像」將數據視爲矩陣)。所以我想找到一種方法來獲得不均勻的箱子,這些箱子也位於笛卡爾飛機的正確位置。在非均勻網格上使用Gnuplot的熱圖

我的數據是這個樣子:

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])。

任何人都可以幫助我嗎?非常感謝你!

+1

您應該發佈您的代碼,否則它將被作爲離題關閉。 「詢問代碼的問題必須對所解決的問題有一個最基本的理解,包括嘗試的解決方案,爲什麼他們不工作,以及預期的結果。」 – zero323

回答

2

最簡單的(也許唯一可行的)方法是添加一些虛擬數據點並使用splot ... with pm3d。這種繪圖風格可以處理一般四邊形的熱點圖。

image繪圖樣式爲每個數據點繪製一個框(一個大像素),而pm3d將每個數據點視爲一個或多個四邊形的角。每個四邊形的顏色由角的值確定,並可用set pm3d corners2color進行調整。

因此,在您的情況下,您需要將4x4矩陣擴展爲5x5矩陣(向右和向上展開),但選擇左下角以確定顏色set pm3d corners2color 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結果是:

enter image description here

一般,z - 虛擬數據點的值並不重要,但在上面的腳本中,它應該位於最小值和最大值之間以允許set autoscale fix在色階上正常工作。

如果您不想手動更改數據文件,可以使用一些腳本來完成,但這是一個不同的問題。

+0

非常感謝Christoph,這就是我一直在尋找的! – user1962851