2015-02-09 93 views
1

我有以下csv文件:用gnuplot繪製單個值?

timestamp,unit,maximum,average 
Thu Feb 05 14:54:00 GMT 2015,Percent,13.0,4.503333333333333 

當我運行了以下bash腳本:

#!/bin/bash 

graph_results() { 
    input=cpu-samples.csv 
    output=cpu-samples.png 
gnuplot <<- eor 
    set terminal png 
    set output '${output}' 
    set style data linespoints 
    set xdata time 
    set timefmt '%b %d %H:%M:%S GMT %Y' 
    set format x '%b %d %Y %H:%M' 
    set datafile separator "," 
    set xlabel "timestamp" 
    set ylabel "percent" 
    set xtics rotate 
    plot '< tail -n +2 ${input} | cut -f 1 --complement -d" "' using 1:3 title 'Maximum', '' using 1:4 title 'Average' 
eor 
} 

graph_results 

我收到以下錯誤:

bash-4.1$ ./run_gnuplot 
Could not find/open font when opening font "arial", using internal non-scalable font 
Warning: empty x range [4.76463e+08:4.76463e+08], adjusting to [4.71699e+08:4.81228e+08] 

,所得圖具有正確的數據點和時間戳記,但是圖表中填充的x軸的日期值不正確。

它工作正常時,csv文件有多個值,但不是隻有一個值時。我意識到錯誤信息是因爲對於一個值,x軸的開始和結束範圍是相同的(如這裏所指出的http://gnuplot.10905.n7.nabble.com/empty-x-range-td1650.html)。

我知道我可以設置以下配置的範圍:

set xrange 

但不知如何,我可以在我的情況下,使用,因爲我使用的是自定義的日期格式,我不知道是什麼由於生成的數據是動態的,開始日期和結束日期應該是?

回答

0

在使用自定義timefmt,將xrange也必須使用此格式指定:

set xrange ["Feb 04 00:00:00 GMT 2015":"Feb 09 00:00:00 GMT 2015"] 

或者你可以整數,i.e.a時間戳來設置x範圍。版本5.0下面的線是等效於上面的字符串設置:

set xrange [1423008000:1423440000] 

。注意,直到版本4.6 gnuplot的用於其時間戳第一2000年1月爲時間基準,並且僅因爲5.0標準的Unix時間戳。因此,直到4.6,對第一行字符串設置的等效命令將是

set xrange [476323200:476755200] 
+0

謝謝@Christoph。有沒有一種方法可以告訴gnuplot只繪製一個值,因此x軸將只顯示一個值,而不是嘗試爲x軸創建開始和結束值的gnuplot? (對我來說,由於我的數據是動態的,所以我設置xrange的方式很棘手) – Rory 2015-02-09 11:03:19

+0

您可以使用'set xtic(...)'手動設置這個單獨的tick,但是您必須從某處獲取值... 'set xtic('Feb 05 2015 14:54''Feb 05 14:54:00 GMT 2015')'(我現在不能試試這個) – Christoph 2015-02-09 11:07:52

+0

完美,再次感謝@Christoph – Rory 2015-02-09 11:14:47