首页 > 解决方案 > 相同 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

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

条形图输出

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

标签: pythonmatplotlibbar-chartdata-visualizationseaborn

解决方案


'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()

结果图


推荐阅读