Python双Y轴可视化

浏览: 2006

作者:国服帅座  经济学在读硕士

微信公众号:统计之家

数据说明

在制图时,我们有时候需要将几条曲线放在同一图中,但这些曲线需要的刻度不同。

下面以江苏历年城镇化率数据为例,绘制双Y轴的图。该数据为面板数据,时间跨度为1990-2015,涵盖多项经济指标。我们需要绘制的是后三列指标随时间变动而变动的折线图。不难看出,G列与H列数据相近,使用同一条Y轴;而F列数据较小,若使用同一刻度,曲线太矮,看不出细节。



制图代码

import numpy as np                             # 导入各个模块 
import matplotlib.pyplot as plt
import pandas as pd
from pandas import Series, DataFrame
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']   # 设置字体为黑体
mpl.rcParams['axes.unicode_minus'] = False     # 解决中文字体负号显示不正常问题

导入各个模块,然后导入我们准备好的示例数据。

xls_file = pd.ExcelFile('江苏历年城镇化率.xlsx')  # 打开工作簿  
table = xls_file.parse('Sheet1')                 # 打开第一张表
table.tail()                        # 篇幅有限,只显示最后5条记录

df = table.set_index('年份')        # 将年份设为索引  
df.tail()                        


fig = plt.figure(figsize=(8,6))
ax1 = fig.add_subplot(111)
df['江苏省常住人口城镇化率'].plot(ax=ax1,style='bD--',alpha=0.4,label='常住人口城镇化率')    # alpha表示点的透明程度
df['江苏省的户籍人口城镇化率'].plot(ax=ax1,style='go-.',alpha=0.5,label='户籍人口城镇化率')  # v指三角形,D指正方形
# plt.xticks(np.arange(1990,2016))
plt.xlabel('年份')            
ax1.set_yticks(np.arange(0,0.9,0.1))       # 设置左边纵坐标刻度
ax1.set_ylabel('城镇化率')                  # 设置左边纵坐标标签
plt.legend(loc=2)              # 设置图例在左上方

ax2 = ax1.twinx()
df['净流入人口/常住人口'].plot(ax=ax2,grid=True,label='净流入人口/常住人口',style='y>-.',alpha=0.7)
ax2.set_yticks(np.arange(0,0.121,0.015))  # 设置右边纵坐标刻度
ax2.set_ylabel('净流入人口/常住人口')       # 设置右边纵坐标标签
plt.legend(loc=1)              # 设置图例在右上方
plt.title('江苏历年城镇化率')   # 给整张图命名

plt.savefig('江苏历年城镇化率.png', dpi=400, bbox_inches='tight')     


往期精彩传送

爬虫三步走——以R语言爬取经纬度为例

Python调用高德地图API爬取经纬度

Python调用百度地图API爬取经纬度

Python利用正则表达式分离经纬度

听说过高德版本的天气预报么

推荐 0
本文由 Economicoder 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册