Charts gnuplot-绘制堆叠折线图

Charts gnuplot-绘制堆叠折线图,charts,gnuplot,histogram,Charts,Gnuplot,Histogram,我使用内部基准测试工具。我使用gnuplot(gnuplot4.6补丁级别4)进行可视化 我需要将结果(多次运行的方法执行时间)表示为堆叠折线图,如下所示: 以下是我的.tsv数据文件的摘录: Run MethodA MethodB MethodC 1 192 171 152 2 227 178 161 ... 10 229 161 149 我使用的脚本是: #!/usr/bin/gnuplot -p reset clear set terminal png size 640

我使用内部基准测试工具。我使用gnuplot
gnuplot4.6补丁级别4
)进行可视化

我需要将结果(多次运行的方法执行时间)表示为堆叠折线图,如下所示:

以下是我的
.tsv
数据文件的摘录:

Run MethodA MethodB MethodC 
1   192 171 152
2   227 178 161
...
10  229 161 149
我使用的脚本是:

#!/usr/bin/gnuplot -p

reset
clear

set terminal png size 640,480
set output "timings.png"
set key top left outside horizontal autotitle columnhead
set title "Third-party REST calls"

set xlabel "Run (ordinal)"
set xtics nomirror scale 0

set ylabel "Time (milliseconds)"
set ytics out nomirror

set grid ytics lt 0 lw 1 lc rgb "#bbbbbb"

set style data histogram
set style histogram rowstacked
set style fill solid border -1
set boxwidth 0.75

plot  "timings.tsv" using 2:xticlabels(1) , "" using 3, "" using 4
我得到以下结果:

是的,它不是折线图,而是直方图(我需要表示每个方法的执行时间百分比)。我需要稍微不同的结果(相同的柱状图,不是框,而是连接框顶部的线和下面的填充线),如下所示:

我知道使用
filledcurve
的方法(例如,这里描述的),但是在这种方法中,您需要显式地求和值


是否可以通过
gnuplot
绘制填充区域而不是方框,例如将直方图转换为堆叠折线图?

您确实需要明确求和值,但这不是一个大问题。您可以轻松编写脚本:

firstcol=2
cumulated(i)=((i>firstcol)?column(i)+cumulated(i-1):(i==firstcol)?column(i):1/0)
plot "file.dat" using 1:(cumulated(4)), "" using 1:(cumulated(3)), "" using 1:(cumulated(2))

是的,您必须明确求和,但使用
plot for
sum
函数非常容易,就像在您链接的页面中一样。它不仅适用于3个数据列。我还成功地总结了6列。
唯一的缺点是。。。使用1:(累积(4)),“”使用1:(累积(3))…
表示列标题消失。所以这个传说被错过了。但要恢复它并不难,只需像这样为每一列添加标题:
。。。使用1:(累积(4))标题列标题(4),“”使用1:(累积(3))标题列标题(3)…非常感谢。它适用于任何列编号,
firstcol
允许您定义要求和的序列的第一列。不过,跳过一些专栏会有点尴尬。与
Filled Curve
结合使用时,使用相反的顺序可能会很有用。