gnuplot - 绘制堆积线图

时间:2016-11-08 13:17:24

标签: charts gnuplot histogram

我使用内部基准测试工具。我使用 gnuplot gnuplot 4.6 patchlevel 4)进行可视化。

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

example stacked line chart

以下是我的.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

我得到以下结果:

histogram

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

stacked line diagram - desired diagram

我知道使用filledcurve的方法(例如,在那里描述Creating a Filled Stack Graph in GNUPlot),但在这种方法中,您需要明确地对值进行求和。

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

1 个答案:

答案 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))