2016-08-12 14 views
12

私はgnuplotを使用してプロットしたい次の2つのデータファイルを持っています。gnuplot積み重ねヒストグラムオーバーラップ

timings0.log:

41420 
32587 
4082 
4668 
81 
547 
325 

timings1.log:彼らは、各ファイルを実行することによって生成されるソフトウェアの一部の異なる成分のタイミングを表す

41297 
32393 
4106 
4720 
75 
502 
266 

ファイル内の各行が異なるコンポーネントに対応しているかどうかを確認します。私はsedコマンドを使用して、タイミングファイル内の特定の行を抽出し(hereという提案の方法に従う)、一部のコンポーネントのみが表示されるようなプロットを表示できるようにしています。私はの積み重ねヒストグラムの方法で同じプロットのタイミングの両方のセットを表示したい。ここで

は私の現在のコードです:

set terminal svg size 500,500 enhanced font 'Times-Roman,14' 

set key vertical maxrows 3 

set style data histograms 
set style histogram rowstacked title offset 0,-1 gap 1 
set boxwidth 0.5 relative 
set style fill solid 1.0 

set xlabel offset 0,1 
set xrange [-1:2] 

set xtics 0,1 
set xtics add ("1st Config"0) 
set xtics add ("2nd Config"1) 
set xtics add (""2) 

set yrange [0:50000] 
set ylabel "Time (ms)" 
set ytics 0,5000,50000 

set output "test.svg" 

plot newhistogram "0" lt 1, "<(sed '2!d' timings0.log)" notitle, "<(sed '3!d' timings0.log)" notitle, "<(sed '4!d' timings0.log)" notitle, "<(sed '5!d' timings0.log)" notitle,\ 
    newhistogram "1" lt 1, "<(sed '2!d' timings1.log)" t "Load", "<(sed '3!d' timings1.log)" t "Sort", "<(sed '4!d' timings1.log)" t "Calculation", "<(sed '5!d' timings1.log)" t "Cleanup" 

コードは、私が(例えばtimings0.logに相当)のみ1つのヒストグラムを表示したときに完璧に動作しますが、両方のヒストグラムを表示するには、上記のスクリプトを実行しているときそれらははxaxisに広がらず、と重複しているようです。ここでは、上記のスクリプトの出力は次のとおりです。

enter image description here

あり明白な解決策かもしれませんが、多くの試みとオンライン利用可能ないくつかのリソース上で検索した後、私は正しい出力を得ることができませんでした。 gnuplot 5のパッチレベル3を使用しています。

ありがとうございました。

答えて

6

atをお試しください:

plot newhistogram at 0 lt 1, ... 
    newhistogram at 1 lt 1, ... 

私はまた、少なくともgnuplotは4.6で、gapでエラーが発生します。 rowstackedでは効果がありませんが、より前にはoffsetのように使用できます。全体的なコード:

set terminal svg size 500,500 enhanced font 'Times-Roman,14' 

set key vertical maxrows 3 

set style data histograms 
set style histogram rowstacked 
set boxwidth 0.5 relative 
set style fill solid 1.0 

set xlabel offset 0,1 
set xrange [-1:2] 

set xtics 0,1 
set xtics add ("1st Config"0) 
set xtics add ("2nd Config"1) 
set xtics add (""2) 

set yrange [0:50000] 
set ylabel "Time (ms)" 
set ytics 0,5000,50000 

set output "test.svg" 

plot newhistogram at 0 lt 1, "<(sed '2!d' timings0.log)" notitle, "<(sed '3!d' timings0.log)" notitle, "<(sed '4!d' timings0.log)" notitle, "<(sed '5!d' timings0.log)" notitle,\ 
    newhistogram at 1 lt 1, "<(sed '2!d' timings1.log)" t "Load", "<(sed '3!d' timings1.log)" t "Sort", "<(sed '4!d' timings1.log)" t "Calculation", "<(sed '5!d' timings1.log)" t "Cleanup" 

が私のために次のようになります。

enter image description here

+0

トリックをやったおかげで、非常に多くの感謝を助けて! ;-) – Pyves

関連する問題