1

私は少しググったが、良い解決策を見つけることができなかった。私には一連のイベントがあります:A、B、Cが時間の経過とともに繰り返し発生し、これを次のようにタイムラインにプロットしたいと思います。

AAABBBBAAAAACCAAAAAAAAABBBBABBBBB

しかし、より美的でカラフルな方法で。私はgnuplotを使っているので、誰かがgnuplotのトリックを知っていれば、それは素晴らしいことです。

生データの形式は次のとおりです。

A   4
B   6
C  10
A  14
B  17
C  22
A  27
B  27
C  35
A  35

そして、私が作成したgnuplotスクリプトは次のとおりです。

set terminal png enhanced
set style data histograms

set style histogram columnstacked
set output "timeline.png"
set xlabel "events"
set ylabel "min"
set auto x
set xtics 1
set key top left
set boxwidth 0.5 relative
set style fill solid 0.6 border -1
plot 'timeline.txt' using 2 t "execution"

上記のデータに対してこのスクリプトを実行すると、次のプロットが得られます。 列スタックヒストグラム

1)最初の列の文字に基づいて色を繰り返し、2)ヒストグラムを水平の1次元プロットにします。

助けてくれてありがとう。

4

1 に答える 1

2

このようなものはどうですか:

sum=0
cum_sum(x)=(sum=sum+x,sum-x/2)
set yrange [-1:2]
set xrange [0:*]
unset ytics
set style fill solid
plot 'test.dat' using (cum_sum($2)):(1.0):($2):($0) w boxes t "execution" lc variable

そして、これはラベルに基づいてボックスに色を付けるバージョンです (認めざるを得ませんが、私はこのハックをかなり誇りに思っています):

sum=0
cum_sum(x)=(sum=sum+x,sum-x/2)
set yrange [-1:2]
set xrange [0:*]
unset ytics
set style fill solid
LABELS="ABCD"
plot 'test.dat' using (cum_sum($2)):(1.0):($2):(strstrt(LABELS,strcol(1))) w boxes t "execution" lc variable

特定のラベルが取得する色を制御したい場合は、文字列のset style line X lc rgb 'cyan'インデックスで始まるラベルが色付けされる場所を使用する必要があります。XLABELScyan

于 2012-11-07T04:53:43.223 に答える