时间序列绘图之3y轴图形

利用某站点2018年1月的温度数据绘制3y轴图形。数据文件为’wendu.csv’,里面包逐日的日平均温度、日最高温度、日最低温度。

#导入相关模块
import matplotlib.pyplot as plt
import matplotlib.dates as mdate
import pandas as pd

def read_file(file_name):
    '''
    数据处理函数
    '''
    data_tem=pd.read_csv(file_name)
    #转换为时间日期格式
    data_tem['time']=pd.to_datetime(data_tem['YYYYMMDD'])

    return data_tem

def plot_tem(data_temp):
    '''
    构造绘图函数
    '''
    plt.rcParams['font.sans-serif'] = ['simsun']  # 显示中文
    fig,ax=plt.subplots()   #分离画布对象与绘图区对象
    fig.set_size_inches(10,5)  #设置图片尺寸,单位为英寸

    ax1=ax.twinx()   #再设置一个绘图区
    ax2=ax.twinx()

    f0,=ax.plot(data_temp['time'],
               data_temp['Tmean'],
               c='k',
               ls='-',
               marker='o',
               ms=2,
               lw=1,
               mec='k',
               mfc='k',
               alpha=0.4,
               label='Tmean($^\circ$C)')

    f1,=ax1.plot(data_temp['time'],
               data_temp['Tmax'],
               c='r',
               ls='-',
               marker='o',
               ms=2,
               lw=1,
               mec='r',
               mfc='r',
               alpha=0.4,
               label='Tmax($^\circ$C)')
    f2,= ax2.plot(data_temp['time'],
                 data_temp['Tmin'],
                 c='b',
                 ls='-',
                 marker='o',
                 ms=2,
                 lw=1,
                 mec='b',
                 mfc='b',
                 alpha=0.4,
                 label='Tmin($^\circ$C)')

    # ax.plot(data_temp['time'],data_temp['Tmean'],c='k',label='Tmean($^\circ$C)')
    # ax1.plot(data_temp['time'],data_temp['Tmax'],c='r',label='Tmax($^\circ$C)')
    # ax2.plot(data_temp['time'],data_temp['Tmin'],c='b',label='Tmin($^\circ$C)')

    ax.set_title('逐日温度时间序列图',fontsize=15)
    ax.set_ylabel('Tmean($^\circ$C)', fontsize=15)
    ax1.set_ylabel('Tmax($^\circ$C)',fontsize=15)
    ax2.set_ylabel('Tmin($^\circ$C)', fontsize=15)

    ax1.grid(True,linestyle=':',linewidth=1,alpha=0.5)
    ax1.yaxis.grid(True,which='major',linestyle=':')

    ax.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d'))

    #设置坐标轴位置
    ax2.spines['right'].set_position(('outward',60))

    #设置坐标轴颜色
    ax.spines['left'].set_color(f0.get_color())
    ax1.spines['right'].set_color(f1.get_color())
    ax2.spines['right'].set_color(f2.get_color())

    # ax.spines['left'].set_color('k')
    # ax1.spines['right'].set_color('r')
    # ax2.spines['right'].set_color("b")

    #调整坐标轴标签位置
    ax2.yaxis.set_ticks_position('right')

    #坐标轴标签颜色设置
    ax.yaxis.label.set_color(f0.get_color())
    ax1.yaxis.label.set_color(f1.get_color())
    ax2.yaxis.label.set_color(f2.get_color())

    # ax.yaxis.label.set_color('k')
    # ax1.yaxis.label.set_color('r')
    # ax2.yaxis.label.set_color('b')


    #设置刻度文字尺寸
    ax.tick_params(labelsize=15)
    ax1.tick_params(labelsize=15)
    ax2.tick_params(labelsize=15)

    #设置坐标轴刻度颜色
    ax.tick_params(axis='y',colors=f0.get_color())
    ax1.tick_params(axis='y', colors=f1.get_color())
    ax2.tick_params(axis='y', colors=f2.get_color())

    # ax.tick_params(axis='y', colors='k')
    # ax1.tick_params(axis='y', colors='r')
    # ax2.tick_params(axis='y', colors='b')

    #设置x轴标签旋转角度
    for tick in ax.get_xticklabels():
        tick.set_rotation(30)

    #保存图片
    fig.savefig('1月逐日温度序列图1',dpi=400,bbox_inches='tight',pad_inches=0.1)

    #关闭图片
    plt.close()

    return ()

#主程序部分
if __name__=='__main__':
    file_name='wendu.csv'
    datatemp=read_file(file_name)
    plot_tem(datatemp)

在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值