我使用内部基准测试工具。我使用 gnuplot (gnuplot 4.6 patchlevel 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
的方法(例如,在那里描述Creating a Filled Stack Graph in GNUPlot),但在这种方法中,您需要明确地对值进行求和。
是否可以通过gnuplot
绘制填充区域而不是框,例如将直方图转换为叠加折线图?
答案 0 :(得分:2)
您需要明确地对值进行求和,但这不是一个大问题。您可以轻松编写脚本:
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))