import matplotlib.pyplot as plt
# 设置中文显示为微软雅黑
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
x = ["得分","篮板","助攻","抢断","盖帽","失误","罚球","三分","犯规"]
y = [107,35,26,8,3,10,10,11,22]
z = [123,41,33,5,7,12,21,16,22]
# 增加一个固定维度,长度与上述数据一样
fix_value = []
# 求出数据y和z的最大值,取其1/4的值作为固定长度
value_max = max(max(y), max(z))
fix_temp = value_max / 4
for i in range(len(x)):
fix_value.append(fix_temp)
# 将y,z其中一个维度变为负值,我们选择z
z_ne = [-i for i in z]
# 设置画布大小
plt.figure(figsize=(8, 5))
# 画条形图,设置颜色和柱宽,将fix_value,y,z_ne依次画进图中
plt.barh(x, fix_value, color='w', height=0.5)
plt.barh(x, y, left=fix_value, color='#037171', label='y', height=0.5)
plt.barh(x, z_ne, color='#FF474A', height=0.5, label='z')
# 添加数据标签,将fix_value的x标签显示出来,y和z_ne的数据标签显示出来
for a, b in zip(x, fix_value):
plt.text(b / 2, a, '%s' % str(a), ha='center', va='center', fontsize=12)
for a, b in zip(x, y):
plt.text(b + fix_temp + value_max / 20, a, '%d' % int(b), ha='center', va='center')
for a, b in zip(x, z):
plt.text(-b - value_max / 20, a, '%d' % int(b), ha='center', va='center')
# 坐标轴刻度不显示
plt.xticks([])
plt.yticks([])
# 添加图例,自定义位置
plt.legend(labels=["","掘金","勇士"], loc="upper right",frameon=False)
# 添加标题,并设置字体
plt.title(label='技术统计', fontsize=14, fontweight='bold')
# 设置绘图区域边框不可见
ax = plt.gca()
ax.set_axisbelow(True)
# 设置绘图区域边框不可见
[ax.spines[loc_axis].set_visible(False) for loc_axis in ['bottom', 'top', 'right', 'left']]
# 使布局更合理
plt.tight_layout()
plt.show()