python - 误差条图的 Matplotlib set_data

标签 python matplotlib

Matplotlib 的 line2D 对象,例如调用 plot 返回的对象,有一个方便的方法,set_data,让我快速更新在不影响绘图的其余部分或线条格式的情况下,由单条线绘制的值。

#sample plot
from matplotlib.pyplot import plot
p = plot(arange(10),arange(10))[0]

#now update the data
p.set_data(arange(10),arange(10)+2)
draw()

是否有任何相对简单(几行代码)的方法来对 errorbar 图做同样的事情?我希望能够设置一个包含各种文本、箭头、线条等的复杂图,然后通过几组不同的数据快速循环图的错误栏部分。

errorbar 返回的对象似乎相当复杂,到目前为止我尝试删除和重绘都失败了。

最佳答案

感谢the help from @tacaswell . 下面是可以同时更新 xerryerr 以及 x_datay_data 的 python 函数基线绘图:

def adjustErrbarxy(self, errobj, x, y, x_error, y_error):
    ln, (errx_top, errx_bot, erry_top, erry_bot), (barsx, barsy) = errobj
    x_base = x
    y_base = y

    xerr_top = x_base + x_error
    xerr_bot = x_base - x_error
    yerr_top = y_base + y_error
    yerr_bot = y_base - y_error

    errx_top.set_xdata(xerr_top)
    errx_bot.set_xdata(xerr_bot)
    errx_top.set_ydata(y_base)
    errx_bot.set_ydata(y_base)

    erry_top.set_xdata(x_base)
    erry_bot.set_xdata(x_base)
    erry_top.set_ydata(yerr_top)
    erry_bot.set_ydata(yerr_bot)

    new_segments_x = [np.array([[xt, y], [xb,y]]) for xt, xb, y in zip(xerr_top, xerr_bot, y_base)]
    new_segments_y = [np.array([[x, yt], [x,yb]]) for x, yt, yb in zip(x_base, yerr_top, yerr_bot)]
    barsx.set_segments(new_segments_x)
    barsy.set_segments(new_segments_y)

第一个输入参数(self 是python类)是已经创建的errorbar plot handler,也就是需要更新属性的对象; xy 是更新后的 numpy 数组,应显示 xy 的平均值 轴;最后两个参数 x_errory_error 是为 xy 计算的 errorbar 范围> 数组。如果只需要更新errorbars,x_basey_base应该写成ln.get_xdata()ln。 get_ydata(),分别。

到目前为止,matplotliberrorbar 更新的解决方案确实非常重要,希望在未来的版本中更容易。

关于python - 误差条图的 Matplotlib set_data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25210723/

相关文章:

python - 如何调整 matplotlib 中的自动标记功能,使其正确显示负值?

python - 从消息对话框中删除蜂鸣声

javascript - 如何计算网站的页面加载时间,包括总时间而不仅仅是 document.ready() 时间?

python - 限制 xticks pandas 条形图中的字符

python - 数据框中所有值的频率分布

python - Matplotlib:如何从数组的列中绘制多条线,但给它们一个标签?

python - 在 Pandas 中使用不同的列进行分组和聚合

python - Groupby Pandas 生成多个带条件的字段

python - 检查对话框是否已关闭的更快方法?

python - sympy.plotting.plot3d 不绘制常量函数