如何在Gnuplot中仅绘制yerrorbars的最大值?
我有一个图,显示了平均值和标准偏差。问题是某些行上存在高+/-误差,我只想显示标准偏差的最大值。因此,情节可以更加清晰。现在我使用的是如何在Gnuplot中仅绘制yerrorbars的最大值?,gnuplot,Gnuplot,我有一个图,显示了平均值和标准偏差。问题是某些行上存在高+/-误差,我只想显示标准偏差的最大值。因此,情节可以更加清晰。现在我使用的是linespoints和yerrorbars,绘图如下所示: 正如你所看到的,橙色和绿色的线条变化很大。我只想显示它们的最大值,这样绘图就更清晰了。我使用的脚本如下所示: plot \ t=0 "throughput-vs-networkbuffer-500K-8reducers-all.csv" every 30 u (t
linespoints
和yerrorbars
,绘图如下所示:
正如你所看到的,橙色和绿色的线条变化很大。我只想显示它们的最大值,这样绘图就更清晰了。我使用的脚本如下所示:
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))
然而,如果有一个更优雅的方式来做它,我感谢任何帮助 这里是使用带有向量的
和设置样式箭头的的半个错误条的最小示例。
尽管如此,我不确定仅仅显示“半”个错误条是否“实验上可以接受”
代码:
### "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
####“半”耶罗罗巴
重置会话
$Data我看不到一个简化,你称之为“hack”,这就是yerrorbars的对4列的简化。是的。你是对的。这是另一种形式的调用yerrorbars
。但是,我希望只有最大值。我认为使用(第(2)列+第(3)列)
已经是解决方案了……我不知道是否有替代方案……只有最大值是什么意思?最小值没有符号,最小值到平均值没有线,没有(错误)平均值处的符号,从平均值到最大值的线和从平均值到最大值的误差符号?平均值的线和从平均值到最大值的误差。使用yerrorbars
隐藏最小值,您也会在平均值处得到一个误差符号。如果您想避免这种情况,您可以对从平均值到最大值的垂直线一起使用矢量
最大错误符号的第i个点
,但这并不短且“优雅”。