【问题标题】:Strange bar plot alignment in PandasPandas中奇怪的条形图对齐
【发布时间】:2014-07-02 20:01:23
【问题描述】:

我正在使用以下命令(其中 x 是现有 DataFrame)在 pandas 中生成条形图:

df = x.groupby(['pAlt']).describe()['win_stay'].unstack()
df['se'] = df['std']/np.sqrt(df['count']) # calculate standard error
df['mean'].plot(kind='bar',yerr=df.se,alpha=0.5,ax=ax,legend=False)

除了条的位置之外,情节通常看起来是正确的:

由于某种原因,它们与情节的右边缘对接,而不是居中。这似乎是 Pandas 0.14 中引入的一个新问题:如果我降级到 0.13.1 并运行完全相同的代码,情节如下所示:

除了坚持使用降级版的 pandas 之外,还有什么简单的解决方法吗?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    这可能与this bug in matplotlib 有关,影响某些版本

    import pandas as pd
    import matplotlib.pyplot as plt
    import matplotlib as mpl
    
    print(pd.__version__)
    # 0.14.0
    print(mpl.__version__)    
    # 1.3.1
    
    fig, ax = plt.subplots()
    df = pd.DataFrame({'mean': [0.25, 0.2, 0.25]}, index=[0.5, 0.8, 0.85])
    df['mean'].plot(kind='bar', alpha=0.5, legend=False, ax=ax)
    
    ax.set_xlim(-1, len(df['mean']))
    plt.show()
    

    【讨论】:

    • 顺便说一句,@unutbu,您发布的绘图图形似乎与您发布的代码不匹配...我有 matplotlib 1.3.1,我得到类似于第一个情节的东西正如您的文字所暗示的那样,在问题中。而且我认为您可能是对的,但我不确定该怎么做。
    • 这里也一样。复制/粘贴您的代码,我的情节看起来更像我的问题中的第一个情节,请参阅:dropbox.com/s/d2rihv7holq0j0t/…
    • 但我的问题仍然存在:这里有解决方法还是我现在应该降级 Pandas?
    • @moustachio:嗯,很抱歉,但我不知道您为什么会看到不同的结果。使用 pandas 0.14.0 版和 matplotlib 1.3.1,我得到了上面发布的情节。
    • 我认为这与那个错误无关,当两端的条形高度为零并且在自动缩放中被忽略时会触发该错误。这是 pandas 中的一个错误,而不是 mpl
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    相关资源
    最近更新 更多