Vit*_*ous 3 python matplotlib pandas
首先,要说的是。我知道类似的问题,即pandas-boxplot-groupby- Different-ylim-in-each-subplot和different-ylim-for-shared-axes-in-pandas-boxplot但我仍然无法获得所需的结果与我的数据集。我有一个废水样本数据集,其中列是不同的污染物,行是三个不同组的“代码”:
数据集看起来像这样(但更大)
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])}
Run Code Online (Sandbox Code Playgroud)
和我的箱线图代码(在带有 matplotlib 内联的 jupyter 中)
fig, ax = plt.subplots(figsize=(10, 5))
data.boxplot(['COD','BOD'], 'Group', ax)
Run Code Online (Sandbox Code Playgroud)
输出是这样的

显然,所有数据的 y 轴不可能都相同,但即使在上面的链接的帮助下,我也无法以这种方式重新创建输出来更改各个子图的轴。我真的很感激任何对此的帮助。
一种方法是为子图创建不同的轴并分别绘制数据框列:
fig, ax = plt.subplots(1, 2, figsize=(10, 5))
data.boxplot('COD','Group', ax=ax[0])
data.boxplot('BOD','Group', ax=ax[1])
Run Code Online (Sandbox Code Playgroud)
输出:
您需要在调用sharey=False 之前创建轴DataFrame.boxplot()以强制不共享 y 轴限制。但你必须小心提供正确的 axis 数量,否则 pandas 被迫清除图形并创建它自己的轴(然后将共享它们的 y 轴)。
fig, axs = plt.subplots(1,len(data.Group.unique()),figsize=(10, 5), sharey=False)
data.boxplot(['COD','BOD'], 'Group', axs)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6877 次 |
| 最近记录: |