如何在 Gnuplot 中仅绘制 yerrorbars 的最大值?

How to plot only max values for yerrorbars in Gnuplot?

我有这张图,其中显示了平均值和标准差。问题是某些行存在高 +/- 错误,我只想显示标准偏差的最大值。这样剧情才能更清晰。现在我正在使用 linespointsyerrorbars,情节如下所示:

如您所见,橙色和绿色线条变化很大。我只想显示它们的最大值,以便情节变得更加清晰。我正在使用的脚本如下:

plot \
 t=0 "throughput-vs-networkbuffer-500K-8reducers-all.csv"         every 30 u (t==0?(t0=timecolumn(1,myTimeFmt),t=1):NaN, timecolumn(1,myTimeFmt)-t0):(column(8))             skip 2 notitle "no pre-agg"         with linespoints lc rgb '#E02F44' lt 1 lw 1.0 ps 0.7 pt 2 pi 30 axis x1y1 \
,t=0 "throughput-vs-networkbuffer-500K-8reducers-all.csv"         every 30 u (t==0?(t0=timecolumn(1,myTimeFmt),t=1):NaN, timecolumn(1,myTimeFmt)-t0):(column(8)):(column(9)) skip 2 title   "no pre-agg"         with yerrorbars  lc rgb '#E02F44' lt 1 lw 1.0 ps 0.7 pt 2 pi 30 axis x1y1 \
,t=0 "netBuffer-20K-200K-20K-8local-8global-onephase-all.csv"     every 28 u (t==0?(t0=timecolumn(1,myTimeFmt),t=1):NaN, timecolumn(1,myTimeFmt)-t0):(column(2))             skip 2 notitle "local mini-batch"   with linespoints lc rgb '#008000' lt 1 lw 1.0 ps 0.6 pt 6 pi 28 axis x1y1 \
,t=0 "netBuffer-20K-200K-20K-8local-8global-onephase-all.csv"     every 28 u (t==0?(t0=timecolumn(1,myTimeFmt),t=1):NaN, timecolumn(1,myTimeFmt)-t0):(column(2)):(column(3)) skip 2 title   "local mini-batch"   with yerrorbars  lc rgb '#008000' lt 1 lw 1.0 ps 0.6 pt 6 pi 28 axis x1y1 \
,t=0 "netBuffer-20K-200K-20K-8local-8global-twophase-all.csv"     every 26 u (t==0?(t0=timecolumn(1,myTimeFmt),t=1):NaN, timecolumn(1,myTimeFmt)-t0):(column(2))             skip 2 notitle "local agg 2-phases" with linespoints lc rgb '#FF780A' lt 1 lw 1.0 ps 0.6 pt 8 pi 26 axis x1y1 \
,t=0 "netBuffer-20K-200K-20K-8local-8global-twophase-all.csv"     every 26 u (t==0?(t0=timecolumn(1,myTimeFmt),t=1):NaN, timecolumn(1,myTimeFmt)-t0):(column(2)):(column(3)) skip 2 title   "local agg 2-phases" with yerrorbars  lc rgb '#FF780A' lt 1 lw 1.0 ps 0.6 pt 8 pi 26 axis x1y1 \
,t=0 "netBuffer-vs-latency-20K-200K-20K-8adcom-8reducers-all.csv" every 24 u (t==0?(t0=timecolumn(1,myTimeFmt),t=1):NaN, timecolumn(1,myTimeFmt)-t0):(column(4))             skip 2 notitle "AdCom pre-agg"      with linespoints lc rgb '#3274D9' lt 1 lw 1.0 ps 0.6 pt 5 pi 24 axis x1y1 \
,t=0 "netBuffer-vs-latency-20K-200K-20K-8adcom-8reducers-all.csv" every 24 u (t==0?(t0=timecolumn(1,myTimeFmt),t=1):NaN, timecolumn(1,myTimeFmt)-t0):(column(4)):(column(3)) skip 2 title   "AdCom pre-agg"      with yerrorbars  lc rgb '#3274D9' lt 1 lw 1.0 ps 0.6 pt 5 pi 24 axis x1y1 \

我通过添加 4 列对其进行了改进,其中第三列仅为平均值,第四列为平均值 + 标准差:

X:(column(2)):(column(2)):(column(2) + column(3))

但是,如果有更优雅的方法,我将不胜感激!

这是使用 with vectorsset style arrow 的半个误差条的最小示例。 虽然,我不确定只显示“一半”错误栏是否“在实验上可以接受”。

代码:

### "half" yerrorbars
reset session

$Data <<EOD
# x  y       yerr
1    0.10    0.05
2    0.20    0.10
3    0.45    0.21
4    0.67    0.28
5    0.44    0.11
EOD

unset key
set xrange[0:6]

set style arrow 1 size 0.1,90 lc "red"

plot $Data u 1:2 w lp pt 7, \
     ''    u 1:2:(0):3 w vectors as 1 
### end of code

结果: