Python boxplot返回系列类型对象,而不是轴

Python boxplot返回系列类型对象,而不是轴,python,pandas,matplotlib,Python,Pandas,Matplotlib,我有一个如下所示的数据帧 我试图绘制不同项目中不同物种的大小分布图。以下是我一直在尝试的代码(非常简单,因为我是python新手): 图正是我需要的(如下) 但是,这会将ax作为系列对象而不是轴返回,这使得很难处理打印格式(即添加y标签等)。之后,如果有任何方法可以修复吗?在matplotlib中(熊猫使用的是该工具),每个子批始终会得到一个“轴”。因此,在示例中有轴的集合(系列)(两个子批次)是有意义的。这实际上是个好消息,因为现在您可以通过名称非常方便地访问要设置样式的子绘图。例如,如果

我有一个如下所示的数据帧

我试图绘制不同项目中不同物种的大小分布图。以下是我一直在尝试的代码(非常简单,因为我是python新手):

图正是我需要的(如下)

但是,这会将ax作为系列对象而不是轴返回,这使得很难处理打印格式(即添加y标签等)。之后,如果有任何方法可以修复吗?

在matplotlib中(熊猫使用的是该工具),每个子批始终会得到一个“轴”。因此,在示例中有轴的集合(系列)(两个子批次)是有意义的。这实际上是个好消息,因为现在您可以通过名称非常方便地访问要设置样式的子绘图。例如,如果要将y标签添加到左侧子批次,可以执行以下操作:

ax_A=ax.loc[“A”].loc[“size”]
ax_B=ax.loc[“B”].loc[“尺寸”]
ax_A.set_ylabel(“我的y标签”)
完整示例:

将numpy导入为np
作为pd进口熊猫
test=pd.DataFrame({“Project ID”:np.random.choice([“A”,“B”],100),
“物种”:np.随机选择([“植物1”、“植物2”、“植物3”]、100),
“大小”:np.random.random(100)})
test=test.groupby('Project ID')
ax=测试箱线图(列class='size',按class='classes',返回类型class='axes')
ax_A=ax.loc[“A”].loc[“尺寸”]
ax_B=ax.loc[“B”].loc[“尺寸”]
ax_A.set_ylabel(“我的y标签”)

这很有效,非常感谢@石狮1181很高兴它能工作。如果答案能解决你的问题,请接受
test=pd.read_excel(file,sheet_name="test",engine='openpyxl')
test.set_index('Species')
test=test.groupby('Project ID')
ax=test.boxplot(column='sizes',by='Species',return_type='axes')