相同x轴值的不同条形图

问题描述

我的数据框如下:

match_id    team    team_score
  411       RCB       263
 7937       KKR       250
  620       RCB       248
  206       CSK       246
11338       KKR       241
   61       CSK       240
  562       RCB       235

现在,我想将所有这些值的条形图绘制为单个条形,我在输出中得到的是不同的东西:

Bar Plot Output

有什么方法可以为相同的x轴值制作不同的条形吗?

解决方法

'team'用作x时,每个团队的所有值均被平均,小的误差条显示置信区间。要将表的每个条目作为单独的条形,可以将数据帧的索引用于x。创建酒吧之后,可以为他们加上团队名称。

(可选),hue='team'为每个小组加色。然后需要dodge=False才能使条形图正确定位。在这种情况下,Seaborn还创建了一个图例,该图例并没有那么有用,因为现在同样的信息也作为x值出现。可以通过ax.legend_.remove()取消显示图例。

from matplotlib import pyplot as plt
import pandas as pd
from io import StringIO
import seaborn as sns

data_str = StringIO("""match_id    team    team_score
  411       RCB       263
 7937       KKR       250
  620       RCB       248
  206       CSK       246
11338       KKR       241
   61       CSK       240
  562       RCB       235""")
df = pd.read_csv(data_str,delim_whitespace=True)
color_dict = {'RCB': 'dodgerblue','KKR': 'darkviolet','CSK': 'gold'}
ax = sns.barplot(x=df.index,y='team_score',hue='team',palette=color_dict,dodge=False,data=df)
ax.set_xticklabels(df['team'])
ax.legend_.remove()
plt.tight_layout()
plt.show()

resulting plot