首先,要说。我知道类似的问题,即with Git 2.9.1+和pandas-boxplot-groupby-different-ylim-in-each-subplot,但我仍然无法通过数据集获得所需的结果。我有一个废水样本的数据集,其中的列是不同的污染物,行带有三个不同组的“代码”:
数据集看起来像这样(但更大)
data = pd.DataFrame({'Group': pd.Series(['IN', 'IN', 'IN', 'OUT', 'OUT', 'OUT']),
'COD' : pd.Series([800, 900, 100, 400, 450, 500]),
'BOD' : pd.Series([40, 50, 60, 20, 25, 30])}
和我的箱线图代码(在带有matplotlib内联的jupyter中)
fig, ax = plt.subplots(figsize=(10, 5))
data.boxplot(['COD','BOD'], 'Group', ax)
输出是这样的
很显然,所有数据的y轴都不相同,但是即使在上面的链接的帮助下,我也无法以这种方式重新创建输出来更改单个子图的轴。对此,我将不胜感激。
答案 0 :(得分:3)
您需要在调用sharey=False
之前强制使用DataFrame.boxplot()
来创建轴,以强制不共享y轴限制。 但是您必须小心提供正确的轴数,否则,熊猫将被迫清除图形并创建自己的轴(然后共享它们的y轴)。
fig, axs = plt.subplots(1,len(data.Group.unique()),figsize=(10, 5), sharey=False)
data.boxplot(['COD','BOD'], 'Group', axs)
答案 1 :(得分:1)