【发布时间】:2019-10-23 15:17:09
【问题描述】:
我想绘制带有误差线的数据,其中的点非常密集并且具有相当不同的误差。我希望“好”点(即小错误)非常突出,而“坏”点(即大错误)不那么明显,因为我不希望坏点主导整个画面。这可以通过动态改变线宽或透明度来实现。
到目前为止,我想出的是使用硬截断并将数据绘制两次:所有具有小误差 (0.1) 的点) 增加透明度。
$data << EOD
535.66534 1.553616310747869 0.08061677996455376
536.15027 1.520824866288427 0.05828386048268186
537.38049 1.332803196338175 0.235778491140896
537.64696 1.479699311985051 0.3751992204089783
540.20631 1.497105281091503 0.04237229839015798
541.41537 1.320918189513518 0.4115091427635642
542.00647 1.47517488483194 0.3873921664923128
543.51616 1.515846650015762 0.0471200695087297
545.00234 1.538963623338375 0.1611245310026408
556.4311 1.606343443386191 0.04973685496066002
EOD
plot $data u 1:($3>0.1 ? 1/0 : $2):3 w yerrorbars lc 1, '' u 1:($3<=0.1 ? 1/0 : $2):3 w yerrorbars lc rgb "#aa9400d3"
但这是一个相当硬编码的解决方案。更动态的图片,其中每个点的透明度是根据其误差的大小单独计算的,会更好,更平滑。有谁知道如何实现这一目标?也欢迎“隐藏”坏点的替代建议!
【问题讨论】: