使用数据数组并以某种方式过滤,如果在不使用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,所以欢迎提出任何建议。