0

3つのベースラインと比較していくつかのアルゴリズムのパフォーマンスを測定した実験があります。したがって、ベースラインを示すためにヒストグラムバーにさまざまなスタイルの水平線を描画して、アルゴリズムのヒストグラムをプロットしたいと思います。

以下は、gnuplotで作成したグラフに手動で横線を引いて作成した例です。ヒストグラムの「文」と「ドキュメント」は私がテストしたアルゴリズムを表しており、「モノ」、「ランダム」、「MFS」がベースラインです。

Gnuplot自体の中でこれを行う方法はありますか?そうでない場合、誰かがこれを行うことができる別のツールをお勧めできますか?それとも、代わりに使用すべきより良い視覚化手法がありますか?

各シリーズのバーがさまざまなスタイルの線で二分されているヒストグラム

4

1 に答える 1

2

これは間違いなく可能です。これが私が作った小さな例です:

まず、データファイル"data.dat"

#histograms
1 3 stack1
2 2 stack2
3 1 stack3


#mono
 .6
 .6

 1.5
 1.5

 3.1
 3.1

次に、それをプロットするgnuplotスクリプトを実行します。

set yrange [0:*]
set style data histograms 
set style histogram cluster gap 1

IDX=-1
xpos(x)=(IDX=IDX+1, IDX%2==0)?(IDX/2-.5):(IDX/2+.5)

set style fill solid
plot 'data.dat' index "histograms" u 1:xtic(3) title "column1", \
     '' index "histograms" u 2 title "column2", \
     '' index "mono" u (xpos($1)):1 w lines ls -1 title "mono"

これは私の前のバージョンより少しトリッキーです。ヒストグラムのクラスターをプロットする場合、各クラスターは、0から始まり、クラスターごとに1ずつ増加する整数を中心とします(xticsとラベルの設定に関係なく)。私が行ったことは、データファイルを単純化するためにその情報を使用しています。このplotコマンドは、2つの異なるデータセットをヒストグラム(データファイルの「ヒストグラム」部分の各列から取得)としてプロットします。最初のデータセットは、xticラベルを追加します。次に、注意が必要な部分です。副作用のある関数を作成します(gnuplotインライン関数はgnuplot 4.4の新機能だと思います)。呼び出されるたびに、変数の値IDXがインクリメントされます-したがって、xrangeの現在の位置は常にIDX/2です。IDX/2-.5この関数は、戻り値と戻り値を交互に繰り返しますIDX/2+.5。別のデータセットを作成するには、別のイテレータを使用することを除いて同じであるrandom別の関数が必要になることに注意してください。xpos2xpos1

于 2012-07-30T12:17:17.433 に答える