我有一个使用groupby
从Python Pandas创建的表,称为“ LikelihoodAwareness”。该表如下所示:
Q7 No Yes
AwarenessImprovement
Decrease 1.492537 0.000000
Increase 12.686567 64.925373
No change 4.477612 16.417910
我想制作一个条形图,在y轴上带有百分比(数字),在x轴上带有“是”“否”。我希望该图是一个堆叠的条形图,在“否”,“是”列上以不同的颜色表示“增加”,“减少”和“不变”。我还想添加一个图例,描述哪种颜色是“增加”,“减少”,“不变”。
我用过
LikelihoodAwareness.plot(kind='bar', stacked=True)
但是这在x轴上绘制了“增加”,“减少”和“不变”,在图例上绘制了“是”,“否”。
如何使条形图在x上绘制“是”,“否”列以及堆积的条形图的“增加”,“减少”和“不变”的百分比
答案 0 :(得分:1)
您必须从groupby创建一个类似于您所显示的表的DataFrame,然后将其应用于转置 DataFrame。
我已经创建了一个像您的表格一样的DataFrame来绘制图形。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
df = pd.DataFrame()
df['No']=[1.492537,12.686567,4.477612]
df['Si']=[0,64.925373,16.417910]
ax=df.T.plot(kind='bar', stacked=True,figsize=(15,15),fontsize=20)
df['index']=['Decrease','Increase','Nochange']
df.set_index('index')
ax.legend(df['index'],fontsize=20)
输出: