Charts gnuplot-绘制堆叠折线图
我使用内部基准测试工具。我使用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
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
结合使用时,使用相反的顺序可能会很有用。