用python画含有主次坐标轴的折线图,以降水-径流图为例

有时候,我们想把两种纵轴数据不同,但横轴数据相同的数据画在同一个图里,这时候就需要设置主次坐标轴。用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()#显示图片

效果如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值