2014-08-29 15 views
5

我有一個數據文件,看起來像這樣:GnuPlot中的三維圖,其中顏色是我的數據文件中的第四列?

1 2 3 0.5 
2 8 9 0.2 
3 4 78 0.4 
6 5 7 0.01 
9 9 9 0.3 
10 12 18 0.9 
6 8 4 1 

我願做一個曲線圖這樣 http://2.bp.blogspot.com/-378_rAaSSVU/UzU0gnGcr9I/AAAAAAAABnU/P1GwP9RKBkM/s1600/gnuplot.png 凡第4列是顏色。

我試過 - 顯然不正確,因爲我不使用第四列,但我沒能找到的文檔中任何事情:

set dgrid3d 30,30 
set view 60,45 
set hidden3d 
dataFile='prova.dat' 
set palette defined (0 "blue", 0.5 "white", 1 "pink") 
set pm3d 
splot dataFile u 1:2:3 with pm3d 

就是這樣可能出頭?

回答

6

僅使用pm3d您可以使用第四列來選擇獨立於z值的顏色。與dgrid3d一起,這不是直接可能的,因爲網格不在顏色列上執行。

您可以使用一種解決方法:首先將網格z值繪製到一個文件,然後將網格顏色值繪製到第二個文件,並將最後一個點禁用dgrid3d,將兩個臨時文件即時合併,繪製他們的價值觀:

set dgrid3d 30,30 
dataFile='prova.dat' 

set table dataFile.'.grid' 
splot dataFile u 1:2:3 
unset table 

set table dataFile.'.color' 
splot dataFile u 1:2:4 
unset table 

set view 60,45 
set hidden3d 
set palette defined (0 "blue", 0.5 "white", 1 "pink") 
set autoscale cbfix 
set pm3d 
unset dgrid3d 
set ticslevel 0 
splot sprintf('< paste %s.grid %s.color', dataFile, dataFile) u 1:2:3:7 with pm3d notitle 

enter image description here

請注意,這是paste類Unix操作系統的命令行工具。對於類似的Windows解決方案,您可以編寫一個小的Python腳本paste.py(請參閱我的回答Get ratio from 2 files in gnuplot以獲取可能的實現)。然後,你必須運行wgnuplot_pipes.exe二進制文件和splot命令變爲

splot sprintf('< python paste.py %s.grid %s.color', dataFile, dataFile) u 1:2:3:7 with pm3d notitle 

當然,對於這個你必須安裝Python和Python的二進制文件必須通過PATH環境變量可用。

+0

謝謝你的迅速回答。 我不是一個熟練的用戶,因此我不明白 - 使用4.6版patchlevel運行代碼5-代碼生成的警告: 第19行:警告:跳過不可讀的文件「paste prova.dat.grid prova.dat。顏色「 第19行:警告:此圖中沒有可用數據自動縮放軸範圍 splotf('paste%s.grid%s.color',dataFile,dataFile) u 1:2:3:7 with pm3d notitle ^ 「C:\ Users \ Baroni \ Desktop \ prova.plt」,第19行:所有點x值未定義 我安裝了python和PATH,我創建了一個腳本作爲你的鏈接但沒有進展 – Naialeoque 2014-09-01 13:25:56

+0

您必須使用我寫的最後一個命令是用' Christoph 2014-09-01 13:32:14

+0

我用過去和複製,所以我想問題是在我的環境中沒有Gnuplot.py,我試圖解決這個問題。 – Naialeoque 2014-09-01 14:07:19

相關問題