python Matplotlib同时画柱状图与折线图

今天有朋友叫我同时画柱状图和折线图,我试了一下,发现挺有意思的,所以把我的代码分享出来:

数据读取

import pandas as pd
import matplotlib.pylab as plt
import seaborn as sns

import pylab as mpl
%matplotlib inline

df=pd.read_excel('demo.xlsx',header=None)
df.head()
df.rename(columns={0:'zhichu',1:'money',2:'ratio'},inplace=True)
df1=df.iloc[:5]
	0	1	2
0	教育支出	46405.0	0.148884
1	社会保障和就业支出	50327.0	0.161467
2	卫生健康支出	34327.0	0.110133
3	交通运输支出	32245.0	0.103453
4	住房保障支出	8470.0	0.027175

作图

fig = plt.figure(figsize=(10,10)) 
label='一般公共预算重点支出情况'
plt.title(label)
plt.text(4, 17, r'单位:万元', fontsize=10)
ax1 = fig.add_subplot(111)  
l=[i for i in range(5)]
b=df1['ratio'].tolist()
b=[round(item*100,1) for item in b]

a=df1['money'].tolist()
lx=df1['zhichu'].tolist()
ax1.plot(l, b,'blue',label=u'增长率');
ax1.yaxis.set_major_formatter(yticks)

for i,(_x,_y) in enumerate(zip(l,b)):  
    plt.text(_x,_y,a[i],color='black',fontsize=10,)  #将数值显示在图形上
ax2.legend(loc=1)
ax2 = ax1.twinx() # this is the important function  
plt.bar(l,a,alpha=0.6,color='brown',label=u'支出')  
ax2.legend(loc=2)
# ax2.set_ylim([0, 2500])  #设置y轴取值范围
for i,(_x,_y) in enumerate(zip(l,a)):  
    plt.text(_x,_y,str(b[i])+'%',color='black',fontsize=10,)  #将数值显示在图形上
# plt.legend(prop={'family':'SimHei','size':8},loc="upper left") 
plt.xticks(l,lx)
plt.show()

展示

在这里插入图片描述

参考文献

Python学习笔记(4)–Matplotlib同时画柱状图与折线图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

农民小飞侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值