在子图中使用独立y轴的pandas箱线图

4
假设我有一个包含三个组'K'、'L'和'M'的数据框,它们在'type'列中,如下所示:
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个回答

6

一个可能的解决方案,也使用了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


有没有办法根据类型对它们进行着色(填充颜色\边框颜色)? - Nandish Patel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接