【问题标题】:Gnuplot: Errorbars with variable styleGnuplot:具有可变样式的错误栏
【发布时间】: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"

但这是一个相当硬编码的解决方案。更动态的图片,其中每个点的透明度是根据其误差的大小单独计算的,会更好,更平滑。有谁知道如何实现这一目标?也欢迎“隐藏”坏点的替代建议!

【问题讨论】:

    标签: gnuplot errorbar


    【解决方案1】:

    使用调色板可能是一个起点:

    set palette defined ( 0 "blue", 1 "white" ) 
    # unset colorbox
    plot $data u 1:2:3:3 w yerrorbars lc palette z lw 2 
    

    它不使用透明度,而是将颜色从蓝色变为白色。 Gnuplot 会自动选择一个合适的cbrange,在这种情况下为 0 到 0.45。值 0 对应蓝色,0.45 对应白色。如有必要,您可以使用set cbrange 调整此范围。可以使用unset colorbox 抑制颜色框。请参阅help palettehelp rgbcolor 了解更多信息。

    这是结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多