简体   繁体   English

在 python 中使用 matplotlib 绘制多个分组条形图

[英]Plot multiple grouped bar chart with matplotlib in python

Here's few rows of my 100k lines df: data.head()这是我的 10 万行 df 中的几行: data.head()

my goal is to have 4 grouped bar charts (1row ; 4 col) where :我的目标是有 4 个分组的条形图(1 行;4 列),其中:

The closest i got is to have the 4 plots but one under the other.我得到的最接近的是有 4 个地块,但一个在另一个之下。 and the code is not as elegant as i want it to be.并且代码并不像我想要的那样优雅。

I'm a beginner so this might look too easy for you.我是初学者,所以这对你来说可能看起来太容易了。 just bare with me :)和我一起裸体:)

Here's my code:这是我的代码:

data_A=data_no_dp.loc[data_no_dp['Product family']=='A'][['id','Site','Tonnage','Année']].drop_duplicates('id')
data_B=data_no_dp.loc[data_no_dp['Product family']=='B'][['id','Site','Tonnage','Année']].drop_duplicates('id')
data_C=data_no_dp.loc[(data_no_dp['Product family']=='C') ][['id','Site','Tonnage','Année']].drop_duplicates('id')
data_D=data_no_dp.loc[(data_no_dp['Product family']=='D') ][['id','Site','Tonnage','Année','Product family']].drop_duplicates('id')

data_A_pivot=data_A.groupby(['Site','Année']).sum().unstack()
data_A_pivot=data_A_pivot['Tonnage'].replace(np.nan,0)

data_B_pivot=data_B.groupby(['Site','Année']).sum().unstack()
data_B_pivot=data_B_pivot['Tonnage'].replace(np.nan,0)

data_C_pivot=data_C.groupby(['Site','Année']).sum().unstack()
data_C_pivot=data_C_pivot['Tonnage'].replace(np.nan,0)

data_D_pivot=data_D.groupby(['Site','Année']).sum().unstack()
data_D_pivot=data_D_pivot['Tonnage'].replace(np.nan,0)


#plt.subplots(1,4, sharey=True, figsize= (20,4))

plt.subplot(2,2,1)
ax1=data_A_pivot.plot(kind='bar')
ax2=data_B_pivot.plot(kind='bar')
ax3=data_C_pivot.plot(kind='bar')
ax4=data_D_pivot.plot(kind='bar')

plt.show()

Since no data were provided, I drew multiple graphs using test data from seaborn.由于没有提供数据,我使用来自seaborn的测试数据绘制了多个图表。 pandas plots and subplots can be addressed with the following technique.可以使用以下技术解决熊猫图和子图。

import matplotlib.pyplot as plt
# for sample data
import seaborn as sns
tips = sns.load_dataset("tips")
data_A = tips[tips['day'] == 'Sun']
data_B = tips[tips['day'] == 'Sat']
data_C = tips[tips['day'] == 'Thur']
data_D = tips[tips['day'] == 'Fri']
data_A_pivot=data_A.groupby(['time','sex']).sum().unstack().fillna(0)
data_B_pivot=data_B.groupby(['time','sex']).sum().unstack().fillna(0)
data_C_pivot=data_C.groupby(['time','sex']).sum().unstack().fillna(0)
data_D_pivot=data_D.groupby(['time','sex']).sum().unstack().fillna(0)

fig, [ax1,ax2,ax3,ax4] = plt.subplots(nrows=1, ncols=4, figsize=(20,4))

data_A_pivot.plot(kind='bar', ax=ax1)
data_B_pivot.plot(kind='bar', ax=ax2)
data_C_pivot.plot(kind='bar', ax=ax3)
data_D_pivot.plot(kind='bar', ax=ax4)

plt.show()

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM