2013-05-02 61 views
3

我在Gnuplot中讀取我的文件時遇到一些問題。 例如,我有一個這樣的文件:在Gnuplot上繪圖 - 跳過行

___________________________________________ 
'#current' 
month followed retweeted mentioned replied 

Jan 395 29 35 28 

Feb 380 28 32 31 

'#previous' 
month followed retweeted mentioned replied 

Jan 381 30 38 32 

Feb 378 25 42 30 

Mar 374 28 46 40 
______________________________________________________ 

我需要只讀第二塊,與標籤「#previous」開始。我該怎麼做?我試過這個命令:

plot "data.txt" index 'previous' using 3:xticlabel(1) axes x1y1 with lines linecolor rgbcolor "red",\ 

但它不起作用。有任何想法嗎?

+1

如果你正在linux下工作,你可以過濾'#previous'後面的任何東西,並將它傳遞給gnuplot,並使用特定的配置文件來考慮你的數據格式。請記住,在這種情況下,您可能想告訴gnuplot您的日期格式如何。 – Greg0ry 2013-05-02 22:20:41

+0

是的,我在Linux下工作,但我剛剛開始,所以對我來說很困難。你能寫出我應該用於繪圖的線嗎? – TomatoLion 2013-05-02 22:28:16

+0

看看這個谷歌搜索:http://goo.gl/6zaiO 第一個鏈接來自堆棧溢出 http://stackoverflow.com/questions/7103531/how-to-get-the-part-of- file-after-the-line-that-matches-grep-expression-first 你用那個和管道去gnuplot – Greg0ry 2013-05-02 22:36:45

回答

1

檢查出這個問題的答案

Gnuplot: Plotting several datasets with titles from one file

我想你需要指數後增加1像這樣

暗算 「的data.txt」 指數使用3:xticlabel (1)軸x1y1與線條linecolor rgbcolor「red」

編輯: 數據集是0索引的,所以第一個數據塊索引爲0,第二個數據塊(前一個)有一個i指數一。您提到的關於壞行的錯誤表明我們的數據文件格式存在問題。 閱讀有關數據格式,在這些鏈接 http://www.gnuplotting.org/plotting-data/ http://lowrank.net/gnuplot/datafile2-e.html

+0

但是爲什麼你在「索引」之後使用「1」?我怎樣才能指定我的「上一個」標籤?我已經嘗試使用3:xticlabel(1)軸x1y1與線條linecolor rgbcolor紅色來繪製「data.txt」,但它表示3行中有不良數據。 – TomatoLion 2013-05-02 22:50:13

+0

gnuplot的較新版本應該接受索引的字符串。 – mgilson 2013-05-03 01:06:47

0

讓我們把一切融合在一起:

this鏈接,你可以學習如何篩選文件(這樣你就可以得到一定的行之後的所有內容)

所以在我們的例子:

sed -e '1,/previous/d' data.txt > gnuplot some_gnuplot_options

我從我的Windows開發機寫這個,所以無法驗證,但這應該給你一些想法,你怎麼能做到這一點。

我還建議定義你餵給gnuplot的gnuplot配置文件。只需創建settings.pg,把有這樣的事情(這是一些工作,我也爲自己做了我的例子,因此並不適用於你的數據格式):

set terminal png size 1024, 360 
set output "load.png" 
set datafile separator "\t" 
set timefmt "%Y-%m-%d %H:%M:%S" 
set xdata time 
set format x "%m/%d\n%H:%M" 
set xrange["2012-04-29 11:00:00":"2012-05-01 11:58:00"] noreverse nowriteback 
set autoscale y 
set grid 
set key left box 
plot "chart.txt" using 1:2 t 'column_1' with lines, "chart.txt" using 1:3 t 'column_2' with lines 

所以,那麼你的gnuplot的調用看起來像這樣的:

sed -e '1,/previous/d' data.txt > gnuplot your_pg_file.pg

你也想檢查時間從gnuplot的手冊here在格式化。


編輯:

如果這是你大學的功課,你不應該在這裏發表您的問題:-)我不想無聊或東西,但它是不是你找的功課你的目標解決方案下文件研究和嘗試不同的東西呃? :-)

+0

我不能使用像「sed」這樣的任何Linux命令,因爲在我必須將解決方案上傳到大學服務器之後,解決方案纔會被測試。它只能包含Gnuplot命令。 – TomatoLion 2013-05-02 22:53:52

+0

'伊拉斯姆斯學生和這個學科的老師不在乎我們怎麼能做到這一點。他沒有給我們任何文檔或者什麼,只是告訴「使用Google」而已。我用google搜索了兩天的解決方案,但是我還沒有找到好的解決方案。 – TomatoLion 2013-05-02 23:08:59

+0

但是我們在'google'時代離開:-)你可以找到你的文檔嗎?那麼,我不是在評判你 - 這是你的業務如何做你的功課。 – Greg0ry 2013-05-02 23:35:45