有时候,我们想把两种纵轴数据不同,但横轴数据相同的数据画在同一个图里,这时候就需要设置主次坐标轴。用python应该怎么画呢?在这里,我以降水-径流过程图为例子,给大家展示以下。其中,横轴是时间(1990-2040),纵轴分别是降水P(单位:mm,数量级在100以上)、径流R(单位:mm,数量级在10以下)。代码如下,需要用到第三方库matplotlib,数据以csv格式存储,同时还给出了可以判断数据是否缺失的异常处理代码。'‘降水-径流数据.csv''文件本人已上传,你们可以下载。
import csv
from matplotlib import pyplot as plt
filename='降水-径流数据.csv'
with open(filename) as f:
reader=csv.reader(f)
header_row=next(reader)#提取标题行
years,p,r=[],[],[]#年、降水、径流
for row in reader:
try:
yi=int(row[0])
pi=float(row[1])
ri=float(row[2])
except ValueError:
print(str(yi),'数据缺失')
else:
years.append(yi)
p.append(pi)
r.append(ri)
fig,ax1 = plt.subplots()
ax2 = ax1.twinx() #给ax1做镜像处理变为ax2
ax1.plot(years,p,'b-',linewidth=1)#主坐标轴画降水过程图
ax2.plot(years,r,'g-',linewidth=0.5)#次坐标轴画径流过程图
plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签
ax1.set_xlabel('年份') #设置x轴标题
ax1.set_ylabel('降水(mm)',color='b') #设置主轴标题
ax2.set_ylabel('径流(mm)',color = 'g') #设置次轴标题
ax1.set_title('降水、径流过程图',fontsize=20)#设置图表名称
plt.show()#显示图片
效果如下图: