2012-03-12 235 views
0

之間filledcurve我有兩個點集:「test1.dat」和「test2.dat」,它們不共享相同的X值。gnuplot的:平滑曲線

由於數據很嘈雜,我想首先繪製兩條平滑線,然後在平滑線之間繪製一條填充曲線。

我已經閱讀教程,並不能找到答案。

回答

1

拉斐爾羅斯的回答捎帶回來,看着gnuplot文檔,你可能也可以實現這一點與數據集的小殼魔法不共享X值以及。我測試了這一點,當發現

plot '< tail -r test2.dat | cat test1.dat -' using 1:2 with filledcurves closed 

的一件事是,你應該確保你有test2.dat結束換行符,否則tail -r將無法​​正常工作(tac可能會工作過,但它沒有安裝在我的蘋果機上,它的作用是取第一個數據文件並將第二個數據文件附加到第一個數據文件(我假定第一個和第二個數據文件已經按升序X值排序)換句話說,據gnuplot的而言,數據是上升的X,則在X下降。因爲我們使用的with filledcurves closed的gnuplot把所有點作爲一個多邊形,然後連接它們。至於平滑的數據,那是另一個問題完全。只是看看在文檔中,gnuplo t提供了一些平滑算法,但它們需要提前用於數據。以下是經過充分測試,但希望將類似的東西你想要什麼(它也可能只在UNIX類型的環境工作)...

set table 'smoothed1' 
plot 'test1.dat' using 1:2 smooth beizer #beizer is just an example see "help plot datafile smooth" for more options 
unset table 

set table 'smoothed2' 
plot 'test2.dat' using 1:2 smooth beizer 
unset table 

plot '< tail -r smoothed2 | cat smoothed1 -' using 1:2 with filledcurves closed 

如果它不工作,看看gnuplot生成的文件「平滑1」和「平滑2」,看看是否給你任何提示(例如是否有額外的換行符應該刪除?)

+0

我得到一個「無法識別的‘平滑’選項」 – 2015-11-24 11:49:07

+0

好像是因爲「beizer」必須orthographed「貝塞爾」 – 2015-11-24 12:06:29

1

是據我所知,在2個不同的文件中使用的數據的Gnuplot不能使地塊。在這種情況下,我調用一個BASH程序,比如「粘貼」來合併這兩個文件。我認爲這兩個文件中包含的格式爲「XY」的數據,他們都有一個共同的X-格(數據點的數量也必須等於)

plot '<paste test1.dat test2.dat' u 1:2:4 w filledcurve 

PS:如果你不使用Linux的我不知道knwo如何做到這一點......

+1

數據作圖fropm兩個不同的文件是可能的:'情節 「test1.dat」 使用1 「test2.dat」 使用2'產生反映每個文件中的數據點的圖形。 – vaettchen 2012-03-12 18:25:20

+1

另一個問題是,我想先拿到兩個流暢的線條,使數據是嘈雜。然後在平滑線之間填充曲線。 – toby 2012-03-13 00:45:44

+0

我更喜歡使用外部程序進行數據處理(例如平滑)。這可以是小的shell/python /腳本,可以使用類似於上面的例子..但它不是一個很好的解決方案。爲此,最好使用Python中嵌入的Gnuplot(Gnuplot.py),您可以在1個腳本中使用Numpy/Scipy進行數據處理...... – 2012-03-13 10:08:13

0

這適用於我。第一與上平滑線和x軸之間的一些顏色填充,第二填充下線和x軸之間的白色,最後繪製兩個平滑線。

光滑CSPLINE必須filledcurve是前

plot "test1.dat" using ($1):($2) notitle smooth cspline with filledcurve x1 lt rgb "#FFAAAA",\ "test2.dat" using ($1):($2) notitle smooth cspline with filledcurve x1 lt rgb "#FFFFFF",\ "test1.dat" using ($1):($2) notitle w l lw 2 lt 1 lc 0 smooth cspline,\ "test2.dat" using ($1):($2) notitle w l lw 2 lt 1 lc 1 smooth cspline