2012-06-12 67 views
1

我想使用gnuplot在同一個圖上繪製多個行堆積的直方圖。樣本數據文件如下:Gnuplot:使用不同的鍵的多個直方圖

App1 20 30 50 
App2 10 20 70 

我使用的腳本這個

set terminal jpeg medium 
set output "histo.jpeg" 
set boxwidth 0.75 absolute 
set style fill solid 1.00 border -1 
set style data histogram 
set style histogram rowstacked 
set xtics 1000 nomirror 
set ytics 100 nomirror 
set mxtics 2 
set mytics 2 
set ytics 10 
set yrange [0:120] 
set ylabel "Total time" 
set key below vertical 

plot 'data' using 2 t "Idle", '' using 3 t "User space", '' using 4 :xtic(1) t "Kernel space" 

我得到的結果是這樣的:enter image description here

我想有下面的每個單獨的密鑰直方圖,因爲我想顯示每個元素佔用的時間量,這是從一個圖到另一個圖的不同。另外,可能出現在一個直方圖上的某些元素不會出現在另一個上。

我的目的是創建一個腳本來生成數據文件和gnuplot腳本來自動執行此過程。

我已經使用jgraph實現了上述功能,但結果在外觀上相當差。

非常感謝,

SPAP

回答

2

不幸的是,有沒有乾淨的方式來做到這一點。你可以通過第一次繪製你的數據(在一個多槽中),然後在事實之後讓「空白」圖表添加更多的鍵來達到類似的效果。

set boxwidth 0.75 absolute 
set style fill solid 1.00 border -1 
set style data histogram 
set style histogram rowstacked 
set xtics 1000 nomirror 
set ytics 100 nomirror 
set mxtics 2 
set mytics 2 
set ytics 10 
set yrange [0:120] 
set ylabel "Total time" 
set multiplot 

#These might be helpful to keep all the "plots" aligned. 
set lmargin at screen .2 
set rmargin at screen .9 
set tmargin at screen .9 
set bmargin at screen .2 

set key at first .5,screen .1 #could be "set key at screen 0.1,0.1" You'll have to play around with it. 

plot 'data' using 2 t "Idle", \ 
    '' using 3 t "User space", \ 
    '' using 4 :xtic(1) t "Kernel space" 

unset xtics 
unset xlabel 
unset ytics 
unset ylabel 
unset title 
unset border 
set xrange [GPVAL_X_MIN:GPVAL_X_MAX] 

set key at first 1.5,screen .1 
plot NaN t "Idle (app2)" w boxes, \ 
    NaN t "User space (app2)" w boxes, \ 
    NaN t "Kernel space (app2)" w boxes 

unset multiplot 
+0

謝謝,它的工作!這正是我所期待的。太糟糕了,它不是一個內置的功能。 – Spap

+0

@Spap - 是的,gnuplot有幾件事是我偶爾想要解決的(單調和調色板)是我能想到的兩個。 – mgilson