1

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"

私が得ている結果はこれです:ここに画像の説明を入力

各要素が占有している時間をグラフごとに表示したいので、各ヒストグラムの下に個別のキーが必要です。また、1 つのヒストグラムに表示される一部の要素が、別のヒストグラムには表示されない可能性があります。

私の意図は、このプロセスを自動化するために、データ ファイルと gnuplot スクリプトの両方を生成するスクリプトを作成することです。

jgraphを使用して上記を達成しましたが、結果は見た目がかなり悪いです。

どうもありがとう、

スパップ

4

1 に答える 1

2

残念ながら、これを行うクリーンな方法はありません。最初にデータを (マルチプロットで) プロットし、その後「null」プロットを作成してさらにキーを追加することで、同様のことを実現できます。

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
于 2012-06-12T16:03:27.960 に答える