赞
踩
原始数据中,分为第0,1,2,3列,这里使用第1(横轴),2列(左纵轴),3列(右纵轴)
2006 | 49.7 | 35.02 | 29.07 |
2007 | 51.25 | 33.68 | 29.62 |
2008 | 54.75 | 37.88 | 31.39 |
2009 | 53.57 | 36.21 | 29.44 |
2010 | 46.08 | 30.77 | 20.9 |
2011 | 48.32 | 31.21 | 23.03 |
2012 | 52.06 | 31.28 | 24.47 |
2013 | 53.86 | 31.38 | 25.57 |
2014 | 57.13 | 30 | 27.08 |
结果:
import matplotlib.pylab as plt # 导入绘图包 import matplotlib.pyplot as mp from pylab import * #图像中的title,xlabel,ylabel均使用中文 import numpy as np #使用自己下载的宋体库simsun.ttc,原始matplotlib不支持中文 myfont = matplotlib.font_manager.FontProperties(fname="simsun.ttc") mpl.rcParams['axes.unicode_minus'] = False dates,y1 = np.loadtxt('全国发病数据_可用于分析.csv', delimiter=',', usecols=(0,1), unpack=True) dates,y2 = np.loadtxt('全国发病数据_可用于分析.csv', delimiter=',', usecols=(0,2), unpack=True) mp.gcf().set_facecolor(np.ones(3) * 240/255)#设置背景色 fig, ax1 = plt.subplots() # 使用subplots()创建窗口 ax2 = ax1.twinx() # 创建第二个坐标轴 ax1.plot(dates, y1,'o-', c='orangered',label='y1', linewidth = 1) #绘制折线图像1,圆形点,标签,线宽 ax2.plot(dates, y2, 'o-', c='blue',label='y2', linewidth = 1) #同上 ax1.set_xlabel('时间', fontproperties=myfont,size=18) #与原始matplotlib设置参数略有不同,使用自己下载的中文宋体,参数位置不可改变 ax1.set_ylabel('第1列数据', fontproperties=myfont,size=18) ax2.set_ylabel('第2列数据', fontproperties=myfont,size=18) mp.gcf().autofmt_xdate()#自动适应刻度线密度,包括x轴,y轴 mp.legend()#显示折线的意义 plt.show()
但是存在问题,只显示了一个label,怎么办?
原因:
应该是legend()默认使用当前界面的label,理论上我们是建立了两个界面的,也就是两个图层,windows系统只标记了上方的图层的label。
改进与解决
fig, ax1 = plt.subplots() ax1.plot(dates, y1,'o-', c='orangered',label='cancer viliage num', linewidth = 1) mp.legend(loc=2) ax2 = ax1.twinx() ax2.plot(dates, y2, 'o-', c='blue',label='waster water', linewidth = 1) mp.legend(loc=1)
说明:在mp.legend()中添加了参数loc,而对应值1,2,3,4分别对应图像的右上角,左上角,左下角,右下角
所有改进代码:
import matplotlib.pylab as plt # 导入绘图包 import matplotlib.pyplot as mp from pylab import * #图像中的title,xlabel,ylabel均使用中文 import numpy as np #使用自己下载的宋体库simsun.ttc,原始matplotlib不支持中文 myfont = matplotlib.font_manager.FontProperties(fname="simsun.ttc") mpl.rcParams['axes.unicode_minus'] = False dates,y1 = np.loadtxt('可用于分析.csv', delimiter=',', usecols=(0,1), unpack=True) _,y2 = np.loadtxt('可用于分析.csv', delimiter=',', usecols=(0,2), unpack=True) mp.gcf().set_facecolor(np.ones(3) * 240/255)#设置背景色 fig, ax1 = plt.subplots() # 使用subplots()创建窗口 ax1.plot(dates, y1,'o-', c='orangered',label='y1', linewidth = 1) #绘制折线图像1,圆形点,标签,线宽 mp.legend(loc=2) ax2 = ax1.twinx() # 创建第二个坐标轴 ax2.plot(dates, y2, 'o-', c='blue',label='y2', linewidth = 1) #同上 mp.legend(loc=1) ax1.set_xlabel('时间', fontproperties=myfont,size=18) ax1.set_ylabel('y1', fontproperties=myfont,size=18) ax2.set_ylabel('y2', fontproperties=myfont,size=18) mp.gcf().autofmt_xdate()#自动适应刻度线密度,包括x轴,y轴 plt.show()
结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。