【问题标题】:Plotting asymmetric error bars Matplotlib绘制不对称误差线 Matplotlib
【发布时间】:2016-10-18 08:14:34
【问题描述】:

所以我有三组数据:

min_data = np.array([ 0.317, 0.312, 0.305, 0.296, 0.281, 0.264, 0.255, 
0.237, 0.222, 0.203, 0.186, 0.17, 0.155, 0.113, 0.08])

avg_data = np.array([ 0.3325, 0.3235, 0.3135, 0.30216667, 0.2905, 0.27433333, 
0.26116667, 0.24416667, 0.22833333, 0.20966667, 0.19366667, 0.177, 
0.16316667, 0.14016667, 0.097])

max_data = np.array([ 0.346, 0.331, 0.32, 0.31, 0.299, 0.282, 0.266, 0.25, 
0.234, 0.218, 0.204, 0.187, 0.175, 0.162, 0.115])

我需要用误差线绘制这些数据。

我已经尝试过:

x = np.linspace(0, 100, 15)
err = [min_data, max_data]
plt.errorbar(x, avg_data, 'bo', yerr=err)

TypeError: errorbar() got multiple values for argument 'yerr'

最终的图表应如下所示:

plt.plot(x[::-1], avg_data, 'ro')
plt.plot(x[::-1], min_data, 'bo')
plt.plot(x[::-1], max_data, 'bo')

蓝色点代表误差线的位置。

我能找到的所有文档都只允许在 + 和 - y 方向上相等的不对称错误。

谢谢

【问题讨论】:

    标签: python numpy matplotlib


    【解决方案1】:

    您的代码失败是因为它认为'bo'yerr 参数,因为plt.errorbar 中的第三个参数是yerr。如果要传递格式说明符,则应使用 fmt 关键字。

    plt.errorbar(x, avg_data, fmt='bo', yerr=err)
    

    【讨论】:

    • 啊,没想到……谢谢!
    • @KyleHunter 没问题。附言我绘制了您的数据,您需要从最大值和最小值中减去平均值以获得您要查找的误差线类型。
    • 是的,我看到了,很容易改变:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 2016-06-04
    • 2013-03-15
    • 2016-03-10
    • 1970-01-01
    相关资源
    最近更新 更多