2012-06-06 89 views
3

我有一個文件,其文件中的隨機值在-256到+256之間。每個條目都在一個新的行中。我想用y軸上的文件中的值繪製該文件。我不知道執行plot命令時的條目數量。任何人都知道有什麼辦法做到這一點?使用GNU繪圖繪製文件中的數據列表

回答

4

如果我理解正確的話,你的文件看起來是這樣的:

100 
-120 
248 
10 
-212 
... 

(我用的整數,而浮點數會工作得很好......偶數像「1.E-5 「都OK)。如果是這樣的話,你真的可以輕鬆地繪製它:

plot 'datafile.txt' using 1 

的x值從0開始,上升到在文件中的行數。有關更多信息,請參閱help datafile using

如果你想所有的點具有相同的x值,你可以做這樣的事情:

plot 'datafile.txt' using (0.0):1 

你可能會得到一個警告約零點範圍在x軸(其中ISN」問題 - gnuplot做了正確的事情)。如果您真的想在繪圖之前擺脫警告(或繪製...)

例如,

set xrange [-1:1] 
plot 'datafile.txt' using (0.0):1 

plot [x=-1:1] 'datafile.txt' using (0.0):1 

編輯

根據你在下面的評論說,你有gnuplot的運行腳本的樣子:

set terminal png 
set output "waveform-hy1-00000001-20120501-160221.929.raw.png" 
plot 'waveform.txt' with dots # it shouldn't matter, but I always use a using statement just for clarity. 
replot  # <--- a replot after a plot is probably not what you want here. 
set output "delta-hy1-00000001-20120501-160221.929.raw.png" #<-- Nothing will be written to this file... 

一一些評論 - 首先,你確定你沖洗/關閉你的輸出t文件(waveform.txt)和你的腳本文件(temp)在繪圖之前?如果輸出被緩衝,那麼當gnuplot去閱讀這些文件時,其中一個文件是空的。接下來,如果沒有重新設置輸出文件名,有一個圖和一個重新繪圖不是(通常)你想要的。你想用這個來達到什麼目的?你可能想:

set terminal png 
set output "waveform-hy1-00000001-20120501-160221.929.raw.png" 
plot 'waveform.txt' using 1 with dots 
set output "delta-hy1-00000001-20120501-160221.929.raw.png" 
replot 

雖然這會產生兩個不同的文件相同的情節。這兩個不同文件的目的是什麼?還有更多,你沒有顯示?也許如果您粘貼文件temp的全部內容以及您要做什麼的描述,我們可以提供更多幫助。 (另外,你在這個腳本中混合了引號 - 如果你正在用C++程序編寫腳本,你應該檢查以確保你在創建temp時正確地避免了引號)。

最後,你在什麼操作系統?有很多關於使用上,我有...

+0

喜mgilson沒有經驗窗戶gnuplot的..是的,那就是我想要做的東西..但基本上我看到我怎麼能無需進入gnuplot的環境繪製,如果我作出任何意義..所以基本上笏我所做的就是創建一個名爲臨時文件它具有FOLL: 集終端PNG 組輸出「波形hy1-00000001-20120501-160221.929.raw.png」 情節「波形。TXT」與點 重繪 組輸出‘Δ-hy1-00000001-20120501-160221.929.raw.png’ 情節‘delta.txt’與點 重製從我的C++代碼中 然後我把這種與系統調用像這樣: 系統(「gnuplot temp」); 但這是由於某種原因不工作..不知道爲什麼 – hRob

+0

@ hRob - 我編輯了一些建議。如果建議不起作用,我會建議您在StackOverflow上打開另一個問題。每個問題都應該是獨立的,對問題有很好的描述(「由於某種原因,這不起作用」太含糊)。 *什麼*不起作用。 *你期望會發生什麼,發生了什麼*。在這裏提問的部分技巧是找出問題出在哪裏(例如gnuplot腳本或C++接口?),然後進行一個簡單的測試,以便我們可以解決問題。祝你好運。 – mgilson