簡體   English   中英

matplotlib在條形圖中分組的條形圖

[英]matplotlib grouped bars in a bar graph

我正在玩matplotlib和熊貓來創建條形圖。 我有世界杯球隊的數據df.head() ,這是df.head()顯示的內容 在此處輸入圖片說明

我想創建一個條形圖,其中每個條形都是一個唯一的team ,並且一group中的每個團隊都被緊密地繪制在一起,並且各個組之間的距離明顯不同。 這是我目前擁有的:

caps_per_team_per_group = df.groupby(['group', 'team']).Caps.sum()
caps_per_team_per_group.plot(kind='bar', figsize=(15,5))

在此處輸入圖片說明

出於視覺目的,我希望它看起來像這樣: 在此處輸入圖片說明

最簡單的方法是重置groupby數據框的索引並使用seaborn的factorplot。

import numpy as np
import pandas as pd
import seaborn as sns

# Setting up
group_A = ['Egypt', 'Russia', 'Uruguay', 'Saudi Arabia']
group_B = ['Spain', 'Portugal', 'Iran', 'Morocco']
group_C = ['France', 'Denmark', 'Australia', 'Peru']
team = group_A + group_B + group_C
group =['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C']
caps = np.random.randint(5, 50, 12)
caps_per_team_per_group = pd.DataFrame({ 'Caps': caps}, index=pd.MultiIndex.from_tuples(list(zip(group, team)), names=['Group', 'Team']))

# Reset index and plot
caps_per_team_per_group.reset_index(inplace=True)
g = sns.factorplot(x="Group", y="Caps", hue='Team', data=caps_per_team_per_group, kind="bar", palette="muted")

n [47]: caps_per_team_per_group
Out[47]: 
                    Caps
Group Team              
A     Egypt           43
      Russia          39
      Uruguay         20
      Saudi Arabia    49
B     Spain            6
      Portugal         8
      Iran            32
      Morocco         11
C     France          14
      Denmark         41
      Australia       29
      Peru             8

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM