来自 Pandas Dataframe 的 Matplotlib 堆积条形图中的标签问题

Issue with Label in Stacked Bar chart in Matplotlib from a Pandas Dataframe

我有一个 Dataframe,其中有一列(例如 'Col'),其值来自此列表 ['PO101'、'NI101'、'NE101'].

计数是:

我试图在堆叠条形图上显示有多少。

我使用以下代码创建了堆积图:

df.assign(dummy=1).groupby(['dummy','Col']).size().to_frame().unstack().plot(
    kind='bar',
    stacked=True,
    legend=True)

这创建了图表,但图例具有奇怪的元组值,其中包含虚拟值,如下所示:

所以我把上面的legend转为False,用下面的方式生成新的legend。

current_handles, _ = plt.gca().get_legend_handles_labels()
reversed_handles = reversed(current_handles)
labels = reversed(df['Col'].unique())
plt.legend(reversed_handles,labels,loc='lower right')

这生成了具有专有名称的图例,但是,它没有显示正确的颜色代码,如下所示:

绿色(图表中最大的部分)应该是PO101,而不是显示为NI101。

谁能解释一下为什么?

我认为生成图表所遵循的顺序与列出唯一值的顺序可能不同。

在此感谢一些指导。

编辑: 附上图表输出的屏幕截图供您参考。

尝试:

(df['col'].value_counts()
  .to_frame().T
  .plot.bar(stacked=True)
)

你会得到类似这样的东西: