用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()#显示图片

效果如下图:

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
python中使用matplotlib库生成双坐标轴折线图的步骤如下: 1.首先,导入所需的库: ```python import matplotlib.pyplot as plt ``` 2.准备数据: 首先,假设我们有两组数据,分别存储在两个列表中。假设第一组数据是温度值,存储在列表temp中;第二组数据是湿度值,存储在列表humidity中。 3.创建布和坐标轴: ```python fig, ax1 = plt.subplots() ``` 这里使用plt.subplots()函数创建一个布和一个主坐标轴。 4.绘制第一条折线: 使用plot()函数绘制第一组数据的折线。并设置线型、颜色等属性。 ```python ax1.plot(temp, label='Temperature', color='red', linestyle='--') ``` 这里设置label参数为'Temperature',用于图例的显示。color参数设置线的颜色,linestyle设置线的样式。 5.添加坐标轴标签: ```python ax1.set_xlabel('Time') ax1.set_ylabel('Temperature (Celsius)') ``` 使用set_xlabel()和set_ylabel()函数设置x轴和y轴的标签。 6.创建第二个坐标轴: 为了创建第二个坐标轴,我们需要在当前的图形对象上创建一个新的坐标轴对象,并将其与第一个坐标轴对象共享x轴。 ```python ax2 = ax1.twinx() ``` 这里使用twinx()函数创建第二个坐标轴对象ax2,并与ax1共享x轴。 7.绘制第二条折线: 使用plot()函数绘制第二组数据的折线,设置线的属性。 ```python ax2.plot(humidity, label='Humidity', color='blue', linestyle='-.') ``` 8.添加第二个坐标轴的标签: ```python ax2.set_ylabel('Humidity (%)') ``` 9.添加图例: 使用legend()函数添加图例。 ```python ax1.legend(loc='upper right') ax2.legend(loc='upper left') ``` 这里设置loc参数为'upper right'和'upper left',分别指定图例的位置。 10.显示图形: 使用plt.show()函数显示图形。 ```python plt.show() ``` 这样,就生成了一个带有双坐标轴折线图

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值