当sharex = True(bug?)-添加的数据时,Pandas子图丢失数据

时间:2019-01-24 18:52:59

标签: python pandas matplotlib plot seaborn

使用数据数组并以某种方式过滤,如果在不使用sharex=True的情况下进行绘图,则这些绘图似乎是完整的。某些数据可能为零(或无可用数据),该子图中没有条形出现(x轴上缺少!!-可能是sharex=False,但如果显示正确会更好;或者可以打开)。 -当我设置sharex=True(代码中的其他内容都没有改变!)时,即使某些数据的值为零,我也希望所有子图中的所有信息。但是,除此之外,我的确得到的只是一个柱线,而不是我的预期图。我的假设是,在所有图中仅显示公共条(非零)。

有没有办法使用相同的x轴在所有子图中显示所有x参数?

这是我的代码:

% matplotlib inline
import pandas as pd
import numpy as np
import matplotlib.pyplot as plot

ds1 = pd.DataFrame({ "Q2" : [1,2,1,0,2,1,6,4,2,1,2,1,3,2,1,5,1,2,1], 
    "Q3" : [1,5,1,2,2,5,7,1,1,1,5,1,4,2,5,4,1,1,1]})
ds2 = pd.DataFrame({ "Q2" : [1,5,1,4,2,1,5,1,2,1,2,1,3,2,3,4,1,2,1],  
    "Q3" : [3,5,1,2,2,1,4,1,3,1,3,1,4,4,1,3,1,3,1]})
ds3 = pd.DataFrame({ "Q2" : [1,1,2,5,3,3,4,4,2,1,2,1,3,2,3,5,3,4,1],  
    "Q3" : [3,2,1,0,2,1,5,1,2,1,2,1,5,2,1,0,1,2,1]})

ds = [ds1, ds2, ds3]

def func():    
    fig, axes = plot.subplots(len(ds), 5, figsize=(20, 20), sharex=True, sharey=True)
    for k, d in enumerate(ds):
        filter =  [ (d["Q2"] == 1),
                (d["Q2"] == 2),
                (d["Q2"] == 3),
                (d["Q2"] == 4),
                (d["Q2"] == 5)]

        for i, f in enumerate(filter):
            a = d[filter[i]].groupby(list(ds1)[1]).size()/len(d[filter[i]])
            a.plot(kind='bar',ax=axes[k][i])

(Python 3.7,全新安装) [编辑]-刚开始考虑seaborn,这可能有其他行为或可能性。因为我刚接触seaborn,所以欢迎提出任何建议。

0 个答案:

没有答案