これは間違いなく可能です。これが私が作った小さな例です:
まず、データファイル"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
別の関数が必要になることに注意してください。xpos2
xpos1