import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示
# 设置图片大小
plt.figure(figsize=(20, 8), dpi=80)
# 一共有多少个x轴类别
a = ['1法律基本原理', '2基本民事法律制度', '3物权法律制度', '4合同法律制度', '5合伙企业法律制度', '6公司法律制度', '7证券法律制度', '8企业破产法律制度', '9票据与支付结算法律制度', '10企业国有资产法律制度', '11反垄断法律制度', '12涉外经济法律制度']
# bcd代表的是legend(本demo中是题型) --- 每一个分类下的类别所代表的值是多少。
b = np.array([2.0, 1.0, 2.0, 1.0, 5.0, 3.0, 2.0, 1.0, 1.0, 2.0, 1.0, 3.0])
c = np.array([1, 1.5, 3.0, 0, 3.0, 3.0, 1.5, 0, 1.5, 1.5, 3.0, 3.0])
d = np.array([1, 0, 17.0, 0, 0, 2.0, 16.0, 10.0, 10.0, 0, 0, 0])
x_14 = list(range(len(a)))
#通过bottom使得两个柱状图堆叠显示,且没有交叉
# 第二个bottom必须使用第一个y的轴的值,第三个使用第二个和第一个y的label的累加的数值
# 这样就能保证复合后的bar成功的展示出每一个legend的数值了
plt.bar(x_14, b, bottom=None, label='a-选择')
plt.bar(x_14, c, bottom=b, label='b-判断')
plt.bar(x_14, d, bottom=b+c, label='c-大题')
plt.xticks(x_14, a, rotation=45)
plt.legend()
plt.show()