来自 Pandas Dataframe 的 Matplotlib 堆积条形图中的标签问题
Issue with Label in Stacked Bar chart in Matplotlib from a Pandas Dataframe
我有一个 Dataframe,其中有一列(例如 'Col'),其值来自此列表 ['PO101'、'NI101'、'NE101'].
计数是:
- PO101 = 30000
- NI101 = 5000
- NE101 = 3000
我试图在堆叠条形图上显示有多少。
我使用以下代码创建了堆积图:
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)
)
你会得到类似这样的东西:
我有一个 Dataframe,其中有一列(例如 'Col'),其值来自此列表 ['PO101'、'NI101'、'NE101'].
计数是:
- PO101 = 30000
- NI101 = 5000
- NE101 = 3000
我试图在堆叠条形图上显示有多少。
我使用以下代码创建了堆积图:
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)
)
你会得到类似这样的东西: