2015-10-09 81 views
1

我有gnuplot填充曲線的問題。我計算的一些數據使用此代碼來畫一幅畫:閉合線條的Gnuplot填充曲線不能正常工作

plot 'cont.dat' u 1:2 w filledcurves closed lc rgb "#ADFF2F" title "DF" 
'cont2.dat' u 1:2 w filledcurve lc rgb "#CD5C5C" title "DA",\ 
'cont3.dat' u 1:2 w filledcurve lc rgb "#4682B4" title "(DF+DA)/2",\ 
'cont3.dat' u 1:2 w l lw 3 lc rgb "#4682B4" notitle ,\ 
'cont.dat' u 1:2 w l lw 3 lc rgb "#ADFF2F" notitle,\ 
'cont2.dat' u 1:2 w l lw 3 lc rgb "#CD5C5C" notitle 

一切都還順利與此數據:

enter image description here

但是,當我計算的另一種情況。嘗試使用我收到以下錯誤的結果相同的代碼繪製:

enter image description here

我如何改變我的代碼完全填補了領域?我不需要這個透明的'洞'。

UPD:在這裏你可以找到已繪製錯誤的綠化面積數據: https://www.dropbox.com/s/xzheur2mx9h902f/cont.dat?dl=0 不要緊,要麼你畫出三條曲線礦石只是一個對各曲線的結果是一樣的。

我用GNUPLOT 4.6的Windows

+0

請顯示*一個數據*錯曲線,使我們可以嘗試重現此。你使用哪個gnuplot版本? – Christoph

+0

問題是,要繪製的文件具有不同的數據塊(由新行分隔的部分)。這些被視爲單獨的曲線,每個曲線都沒有一個填充區域。你可以看到這一點,當使用'plot for [i = 0:4]'cont.dat'來繪製你的數據時,每行使用1:2 ::: i :: i和行lw 3'。不幸的是,刪除這些新行並不能解決這個問題,因爲行的順序並不像你所需要的那樣。但是,我不知道在使用gnuplot創建輪廓時是否出現了問題,因此您有幾個輪廓段而不是單個輪廓段。 – Christoph

+0

我嘗試從輸入數據中刪除空行,然後按第1列對其進行排序。所以我想現在GNUplot不會像單獨的曲線那樣響應數據。不幸的是,現在我的情節看起來像這樣[link](https://www.dropbox.com/s/4nv8qts0bw645h7/Small_for_paper.png?dl=0)。 我試圖找到解決方案。但事實上,我不確定實際上是由於填充常規還是通過計算以前數據曲線的方法而導致的問題。 – Alex

回答

1

正如評論所提到的,在你的數據的問題一個是,它被分離成塊。但解決這個問題是不夠的。讓我們集中在如下圖所示:

filled curves

在頂部的數字對應的原始數據。我用不同的顏色繪製每個數據塊。如果我們刪除空格,則會獲得中間/藍色圖形,所以問題尚未解決。

如果查看數據,每個數據塊的第一列按箭頭方向排列(上圖),但數據塊按相反方向排序:它們已斷開連接!

因此,數據塊應該排序爲0-4-3-2-1(或任何循環順序,如3-2-1-0-4)。白色空間也應該被刪除。一旦你這樣做,獲得底部/紅色的數字。

這是我用來繪製畫面中的部分代碼:

plot for [i=0:4] 'cont_original.dat' u 1:2 every :::i::i w filledc t 'original block '.i,\ 
    'cont_nospaces.dat' u 1:($2-0.2) w filledc t 'original without spaces',\ 
    'cont_ordered.dat' u 1:($2-0.4) w filledc t 'ordered' 
+0

謝謝。現在它看起來完全是我需要的。對我來說,分析輸入數據是很好的教訓。 – Alex

+0

@vagoberto不錯的一個 – Miguel