如何在Python的散景图中添加误差线?
我已经使用Bokeh成功绘制了多个数据集并拟合了函数,但是我确实需要在图表中添加误差线,我该怎么做?
-
编辑:这现在内置到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)