如何在Python的散景图中添加误差线?

发布于 2021-01-29 16:28:59

我已经使用Bokeh成功绘制了多个数据集并拟合了函数,但是我确实需要在图表中添加误差线,我该怎么做?

关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    编辑:这现在内置到Bokeh中,请参阅文档:

    https://docs.bokeh.org/en/latest/docs/user_guide/annotations.html#whiskers

    https://docs.bokeh.org/en/latest/docs/user_guide/annotations.html#bands

    有关完整的示例,请参见https://stackoverflow.com/a/46517148/3406693


    也许有点晚了,但我今天也想这样做。

    令人遗憾的是bokeh本身不提供此功能。

    import numpy as np
    from bokeh.plotting import figure, show, output_file
    
    # some pseudo data
    xs = np.linspace(0, 2*np.pi, 25)
    yerrs = np.random.uniform(0.1, 0.3, xs.shape)
    ys = np.sin(xs) + np.random.normal(0, yerrs, xs.shape)
    
    output_file('bokeh_errorbars.html')
    
    # plot the points
    p = figure(title='errorbars with bokeh', width=800, height=400)
    
    p.xaxis.axis_label = 'x'
    p.yaxis.axis_label = 'y'
    
    
    p.circle(xs, ys, color='red', size=5, line_alpha=0)
    
    
    # create the coordinates for the errorbars
    err_xs = []
    err_ys = []
    
    for x, y, yerr in zip(xs, ys, yerrs):
        err_xs.append((x, x))
        err_ys.append((y - yerr, y + yerr))
    
    # plot them
    p.multi_line(err_xs, err_ys, color='red')
    
    show(p)
    

    结果如下:

    结果

    可能需要将其用作这样的功能:

    def errorbar(fig, x, y, xerr=None, yerr=None, color='red', 
                 point_kwargs={}, error_kwargs={}):
    
      fig.circle(x, y, color=color, **point_kwargs)
    
      if xerr:
          x_err_x = []
          x_err_y = []
          for px, py, err in zip(x, y, xerr):
              x_err_x.append((px - err, px + err))
              x_err_y.append((py, py))
          fig.multi_line(x_err_x, x_err_y, color=color, **error_kwargs)
    
      if yerr:
          y_err_x = []
          y_err_y = []
          for px, py, err in zip(x, y, yerr):
              y_err_x.append((px, px))
              y_err_y.append((py - err, py + err))
          fig.multi_line(y_err_x, y_err_y, color=color, **error_kwargs)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看