matplotlib 创建 复合条形图

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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值