Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 表的堆叠条形图_Python_Pandas_Matplotlib_Seaborn - Fatal编程技术网

Python 表的堆叠条形图

Python 表的堆叠条形图,python,pandas,matplotlib,seaborn,Python,Pandas,Matplotlib,Seaborn,我有一个表格,列出了不同的类别和一些相关的子类别。比如: 一般类型 特定食物 水果 苹果 水果 苹果 肉 火腿 水果 香蕉 肉 猪肉 蔬菜 生菜 Seaborn's可以进行计数并自动创建适当的图例。不幸的是,这要么使这些条彼此相邻(默认值dodge=True),要么使它们从y=0开始彼此重叠(dodge=False)。一个想法是在生成的条中循环,并通过改变它们的y位置来堆叠它们 导入matplotlib.pyplot作为plt 导入seaborn作为sns 作为pd进口熊猫 将numpy作为np

我有一个表格,列出了不同的类别和一些相关的子类别。比如:

一般类型 特定食物 水果 苹果 水果 苹果 肉 火腿 水果 香蕉 肉 猪肉 蔬菜 生菜 Seaborn's可以进行计数并自动创建适当的图例。不幸的是,这要么使这些条彼此相邻(默认值
dodge=True
),要么使它们从
y=0
开始彼此重叠(
dodge=False
)。一个想法是在生成的条中循环,并通过改变它们的y位置来堆叠它们

导入matplotlib.pyplot作为plt
导入seaborn作为sns
作为pd进口熊猫
将numpy作为np导入
数据=[['水果','苹果'],
[‘水果’、‘苹果’],
[‘肉’、‘火腿’],
[‘水果’、‘香蕉’],
[‘肉’、‘猪肉’],
[‘蔬菜’、‘生菜’]]
df=pd.DataFrame(数据,列=['General','Specific'])
#df_grp=df.groupby(['General','Specific']).agg(len).reset_index().rename(columns={0:'Count'})
ax=sns.countplot(数据=df,x='General',色调='Specific',道奇=False)
底部={}
对于ax.containers中的容器:
对于容器中的酒吧:
h=杆。获取高度()
如果不是np.isnan(h)和h>0:
x=bar.get_x()
w=条。获取宽度()
如果底部有x:
杆组y(底部[x])
底部[x]+=h
其他:
底部[x]=h
text(x+w/2,底部[x]-h/2,f'{h:.0f}',ha='center',va='center')
ax.relim()
ax.autoscale()#根据更改的条重新计算ylims
ax.yaxis.major.locator.set_参数(整数=真)
plt.紧_布局()
plt.show()

如果这个答案解决了你的问题,你可能会认为答案是被接受的。