【问题标题】:Using pandas to plot barplots with error bars使用 pandas 绘制带有误差线的条形图
【发布时间】:2012-10-23 12:32:19
【问题描述】:

我正在尝试从这样的 DataFrame 生成条形图:

            Pre    Post
 Measure1   0.4    1.9

这些值是我从其他地方计算出来的中值,我还有它们的方差和标准差(还有标准误差)。我想将结果绘制为带有正确误差线的条形图,但是为 yerr 指定多个错误值会产生异常:

# Data is a DataFrame instance
fig = data.plot(kind="bar", yerr=[0.1, 0.3])

[...]
ValueError: In safezip, len(args[0])=1 but len(args[1])=2

如果我指定一个值(不正确),一切都很好。我怎样才能真正为每列提供正确的错误栏?

【问题讨论】:

    标签: python matplotlib pandas


    【解决方案1】:

    如果卢卡斯的回答不起作用

    无论出于何种原因,接受的答案对我来说都不起作用(比较我的评论)。我正在使用以下版本

    版本: Python 3.7.6(anaconda),mpl:3.1.3,pd:1.0.1,np:1.18.1

    然而,有效的是对 question 的修改。 该问题的讨论还指出,不同版本和不对称误差线绘图可能存在一些问题。

    代码 围绕数据框列的平均值绘制从最小值到最大值的不对称误差线。

    import numpy as np
    import pandas as pd
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    print('Versions, mpl: {:}, pd: {:}, np: {:}'.format(mpl.__version__, pd.__version__, np.__version__))
    
    df = pd.DataFrame()
    df['a'] = [1, 1, 2, 3, 3]
    df['b'] = [0.5, 0.5, 2, 3, 4]
    print(df)
    
    plt.bar(np.arange(df.shape[1]), df.mean(), yerr=[df.mean()-df.min(), df.max()-df.mean()], capsize=6)
    plt.grid()
    
    plt.show()
    

    【讨论】:

      【解决方案2】:

      你的数据形状是什么?

      对于一个n×1的数据向量,你需要一个n×2的误差向量(正误差和负误差):

      import pandas as pd 
      import matplotlib.pyplot as plt
      
      df2 = pd.DataFrame([0.4, 1.9])
      df2.plot(kind='bar', yerr=[[0.1, 3.0], [3.0, 0.1]])
      
      plt.show()
      

      【讨论】:

      • 形状为 1 行 2 列。我用我的数据尝试了上述方法,但仍然出错。
      • 你能把你的矩阵展平成一个像上面这样的向量吗?无论如何,我已经更深入地研究了 pandas.DataFrame.plot 并且我没有找到一种方法来绘制矩阵数据的误差线。您可能不得不依靠 mathplotlib:MatplotlibBarPlots
      • 我通过转置矩阵获得了更好的运气:就像它工作一样。
      • 我会注意到使用 Pandas v1 我可以将 yerr 传递到 plot 但我必须使用 .values 来删除索引(即使索引与正在绘制的内容匹配)。传入 (2, N) 数组就可以了。
      • 我很困惑,[3.0, 0.1] 的值是什么?错误栏只是由[0.1, 3.0] 确定
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      相关资源
      最近更新 更多