如何在Python的散景图中添加误差线? [英] How do you add error bars to Bokeh plots in python?

查看:113
本文介绍了如何在Python的散景图中添加误差线?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have successfully plotted several data sets and fitted functions using Bokeh however I really need to add error bars to the graphs, how might I go about doing this?

推荐答案

现在,它已内置到Bokeh中,请参阅文档:

This is now built into Bokeh, see the documentation:

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 .

See https://stackoverflow.com/a/46517148/3406693 for a complete example.

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

Maybe its a little late but I wanted to do this today too.

可惜的是bokeh本身不提供此功能.

It's a shame that bokeh does not offer this function by itself.

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)

这是结果:

一个人可能希望将其用作这样的功能:

One might want to use it as a function like this:

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)

这篇关于如何在Python的散景图中添加误差线?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆