2

私はこのようなデータファイルを持っています:

"Execution"  500
"Overhead 1" 200
"Overhead 2" 75

このデータのヒストグラムをプロットしようとしています。これは、実行時間を単一の棒グラフとして示していますが、オーバーヘッド1オーバーヘッド2を単一の積み上げ棒グラフとして示しています。

これは私がこれまでに持っているものです:

set terminal postscript eps 24
set output "wq_time_profile.eps"
set size 0.95,0.95
set boxwidth 1.0 relative    
set style fill solid 0.5 noborder   
set style data histogram 
set style histogram cluster gap 1  
set ylabel "Time (mins)"                                                                      
plot "wq_time_profile.dat" u 1 notitle, "" u 2 notitle, "" u 3 notitle

同じプロットで行1をスタンドアロンの棒グラフとして表示しながら、行2と3を積み上げ棒グラフとして表示する方法について頭を悩ませることはできません。これはgnuplotで可能ですか?gnuplotv4.2を使用しています。ありがとう!

編集:タイトルと質問を変更して、プロットに単一のスタンドアロン棒グラフと同じガットの同じプロット内の積み上げ棒グラフが含まれている必要があることを明確にしました

4

1 に答える 1

2

これはうまくいくようです:

set style fill solid 0.5 noborder
set style histogram columnstacked
set style data histogram
set ylabel "Time (mins)"
plot "test.dat" u 2 notitle with histogram

色ラベルが含まれるキーが必要な場合:

set style histogram columnstacked
set style data histogram
set style fill solid 0.5 noborder
set ylabel "Time (mins)"
plot "test.dat" u 2:key(1) with histogram

編集内容を読んで少し遊んだ後でも、これは可能ですが、データファイルを変更する必要がありました。(大丈夫だといいのですが):

"Execution"  500


"foo" NaN
"Overhead 1" 200
"Overhead 2" 75

次に、プロットスクリプト:

set style histogram columnstacked
set style data histogram
set style fill solid 0.5 noborder
set ylabel "Time (mins)"
plot for [i=0:1] "test.dat" index i u ($2):key(1) with histogram

ここにはたくさんの微妙な点があります。空白のレコードのペアは、プロット時に使用するgnuplot用の個別の「インデックス」を作成する方法です。最初のバーは、それ自体がデータセット内にあります。ここに問題があります。Gnuplotはインデックス0の最初のレコードをインデックス1の最初のレコードと照合し、同じ色でプロットします。それは醜いです。したがって、インデックス= 1データセットに偽のレコードを挿入する必要があります。これはプロットを作成しませんが、色を使用します。それが"foo" NaNラインが行うように設計されていることです。plotまた、両方のインデックスをプロットするように線を変更する必要がありました。また、2つのフォームが欠落データを処理する方法にわずかな違いがあるため、使用仕様をから2:key(1)に変更する必要があります。($2):key(1)

于 2012-11-30T18:51:35.753 に答える