2015-11-16 51 views
2

我有一個簡單的9列文件。我不想計算每列的某些統計數據,然後繪製它(使用gnuplot)。gnuplot多列數據統計

1)這是我如何計算除第一列以外的每列的統計數據。

stats 'data' every ::2 name "stats" 

2)在輸出屏幕我可以看到,操作成功。需要注意的是列/記錄數爲8

* FILE: 
    Records:  8 
    Out of range: 0 
    Invalid:  0 
    Blank:  0 
    Data Blocks: 1 

* COLUMNS: 
    Mean:   6.5000  491742.6625 
    Std Dev:  2.2913   703.4865 
    Sum:   52.0000  3.93394e+06 
    Sum Sq.:  380.0000  1.93449e+12 

    Minimum:  3.0000 [0] 490312.0000 [2] 
    Maximum:  10.0000 [7] 492643.5000 [7] 
    Quartile:  4.5000  491329.5000 
    Median:  6.5000  491911.1500 
    Quartile:  8.5000  492252.2500 

    Linear Model: y = 121.8 x + 4.91e+05 
    Correlation: r = 0.3966 
    Sum xy:  2.558e+07 

3)現在我可以通過附加_x和_y這樣

print stats_median_x 
print stats_median_y 

我的問題第一個2列訪問統計:

  • 如何訪問剩餘6列的統計信息(可以說是中位數)?
  • 我怎麼可以讓我們說一個線對所有的中間軸對一些X軸?

我知道我可以簡單地添加一個python腳本來預先計算所有這些,但我寧願避免它,如果有一種簡單的方法來使用gnuplot本身。

謝謝!

回答

4

簡答題(S)

  • 「我怎麼能訪問其他列的統計數據?」
    stats 'data'using n您會進入到第n個 ...
  • 「我怎麼能繪製例如所有的中位數?」
    例如一個set print和一個do for週期可以創建一個數據文件,您可以使用該圖。

A工作液

set print "StatDat.dat" 
    do for [i=2:9] { # Here you will use i for the column. 
     stats 'data.dat' u i nooutput ; 
     print i, STATS_median, STATS_mean , STATS_stddev # ... 
    } 
    set print 
    plot "StatDat.dat" us 1:2 # or whatever column you want... 

有些話多瞭解一些
問幫助,help stats到GNUPLOT本身有可能讀了很多有趣的事情:-)

語法:
統計 '文件名' [使用N- [:M]] [名 '前綴'] [[無]輸出]]
此命令準備的統計摘要數據在一個或兩個文件列中。使用說明符的的解釋方式與繪圖命令相同。有關index,everyusing指令的詳細信息,請參閱plot

  • 從第一突出句子我們可以瞭解到,它準備爲每個時間(很遺憾,讓我們在今後的見......)一個或最多兩個列統計信息。
  • 從第二個突出判它可以讀取它會跟着繪圖命令的語法相同:
    所以stats 'data'using 3會給你第三列在x,yx
    和第四的stats 'data' using 4:5和第五統計...

說明你的解釋

  1. 優賽d

    這是我如何計算除第一列以外的每列的統計數據。
    stats 'data' every ::2 name "stats"

    不是真的,這是前兩列不包括前兩行統計,的確是他們計數器從0開始,而不是從1

  2. 由於上述假設的後果/解釋,當我們讀到

    記錄:8

    這意味着行計算其中8;你的文件有10個(可用的)行,你指定every ::2,你跳過前兩個,因此你有8個記錄對統計有用。
    事實上,這樣我們可以更好地當help stats據說

    STATS_records   # total number of in-range data records 
    

    暗示「用於計算該統計」理解。

測試上的gnuplot 4.6 PATCHLEVEL 4
上的gnuplot 5.0版PATCHLEVEL工作1個

+0

謝謝!我錯誤地認爲「統計數據」能夠在一次調用中處理文件中的所有列。解決辦法非常有幫助! – kirbo

+0

不客氣。它應該是有用的,但它似乎仍然不是那樣。順便說一句,如果你的文件長度超過10行(可能發生的是我們從10行開始,我們完成了100萬行)__你可能希望使用兩列爲每個pass__執行時間減半,並在隨後的兩行打印x和y。在這個例子中,我更喜歡保持更多的飛機。用另一個技巧,你可以避免將統計數據轉儲到臨時文件中......但爲了理智,最好保持簡單,特別是如果您在一段時間後重用代碼。內存是有限的,至少是我的:-) – Hastur