在时间轴上绘制序列

时间:2012-11-07 01:48:23

标签: plot gnuplot

我搜索了一下,但找不到一个好的解决方案。我有一系列事件: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"

在上面的数据上运行此脚本后,我得到以下图: Columnstacked histogram

我想:1)根据第一列上的字母重复颜色,2)直方图是水平的,一维图。

感谢您的帮助。

1 个答案:

答案 0 :(得分: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' X字符串中以索引LABELS开头的标签将为cyan { {1}}。