2016-03-30 120 views
1

我有一些合理簡單的數據,我想繪製,最好是直方圖或線圖,但我無法弄清楚如何去做。繪製多變量時間數據

下面是一些示例數據:

T Item Temp 
1 Leaf 10 
1 Car 12 
2 Leaf 14 
3 Car 23 
4 Car 29 
4 Leaf 30 

在這個例子中,T是時間,項目是項目名稱和Temp是此時的物品的溫度。

我有幾個問題與試圖繪製這樣的:

  • 項目進行跟蹤爲行,而不是作爲一列
  • 有隱含的零。

如果我的數據是以下形式會更容易爲我繪製,但遺憾的是它沒有格式化是這樣的:

T Car Leaf 
1 12 10 
2 0 14 
3 24 0 
4 29 30 

是gnuplot的能夠繪製前者的例子的,還是我必須編寫一個預處理程序,將提供的數據重新格式化爲更簡單的第二個數據?

回答

0

我相信這完全可以在gnuplot中完成。這會幫助你:

names=("Car Leaf") 
plot for [name in names] 'test.txt' u 1:((stringcolumn(2)eq name?$3:0)) smooth freq with lp title name 

help smoothhelp stringcolumn更多信息

,如果你想自動填補names變量,你可以使用這個system命令:

names=system("awk '{print $2}' test.txt | tail -n +2 | sort | uniq") 

boxes這裏是一個建議:

set boxwidth 0.5/(words(names)) 
plot for [i=0:words(names)] 'test.txt' u ($1-0.5-i/(words(names)+1.0)):((stringcolumn(2)eq word(names,i)?$3:0)) smooth freq with boxes title word(names,i) 

這是你應該得到什麼:

enter image description here