Gnuplot 堆叠直方图重叠

11
我有以下两个数据文件,想要使用gnuplot进行绘图。

timings0.log:

41420
32587
4082
4668
81
547
325

timings1.log:

41297
32393
4106
4720
75
502
266

他们表示软件不同组件的时间,每个文件都是由不同配置执行生成的,每个文件中的每一行对应一个不同的组件。我使用sed命令提取定时文件中的特定行(遵循此处建议的方法),并显示只包含某些组件的图。我想以堆叠直方图的方式在同一图中显示两组时间。以下是我的当前代码:
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)时,代码运行得很完美,但是当运行上述脚本以显示两个直方图时,它们无法在x轴上展开,似乎重叠在一起。以下是上述脚本的输出:

enter image description here

也许有一个显而易见的解决方案,但是在尝试了多次并查阅了几个可用的在线资源后,我仍未能获得正确的输出。我正在使用gnuplot 5补丁级别3。

提前感谢,任何帮助都将不胜感激!

1个回答

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"

对我来说看起来是这样的:

在此输入图片描述


(注:该内容为HTML代码,已保留原样)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接