大熊猫箱图作为具有单独y轴的子图

时间:2018-04-06 10:05:38

标签: python pandas boxplot pandas-groupby

假设我有一个包含三个组的数据框' K',' L'和' M'在列'类型'像:

df = pd.DataFrame(data={'A': random.sample(xrange(60, 100), 10),
                    'B': random.sample(xrange(20, 40), 10),
                    'C': random.sample(xrange(2000, 3010), 10),
                    'type': list(3*'K')+list(3*'L')+list(4*'M')})

为了查看单个分组的箱图,我可以使用:

for i,el in enumerate(list(df.columns.values)[:-1]):
    a = df.boxplot(el, by ='type')

我现在想将这些单个图组合成一个图中的子图。

使用df.boxplot(by='type')创建此类子图。但是,由于列A',' B'和' C'这些子图很难阅读,即信息丢失,尤其是印刷形式。

每个子图如何具有单独的y轴?

1 个答案:

答案 0 :(得分:1)

使用matplotlib的可能解决方案是创建图形和子图,然后使用参数df.boxplot()

将轴传递到ax=

例如:

import matplotlib.pyplot as plt

fig, axes = plt.subplots(2,2) # create figure and axes

df = pd.DataFrame(data={'A': random.sample(xrange(60, 100), 10),
                    'B': random.sample(xrange(20, 40), 10),
                    'C': random.sample(xrange(2000, 3010), 10),
                    'type': list(3*'K')+list(3*'L')+list(4*'M')})

for i,el in enumerate(list(df.columns.values)[:-1]):
    a = df.boxplot(el, by="type", ax=axes.flatten()[i])

fig.delaxes(axes[1,1]) # remove empty subplot
plt.tight_layout() 

plt.show()

enter image description here