开发者

python使用pyplot绘制横轴为时间的图

开发者 https://www.devze.com 2024-09-20 09:17 出处:网络 作者: 豆腐脑lr
目录1. 导入环境2. 绘图方法3. 绘图4.自定义x轴日期显示格式总结1. 导入环境 import numpy as np
目录
  • 1. 导入环境
  • 2. 绘图方法
  • 3. 绘图
  • 4.自定义x轴日期显示格式
  • 总结

1. 导入环境

import numpy as np
import matplotlib.pyplot as plt

from Ipython import display
from datetime import datetime
from datetime import date

2. 绘图方法

def myplot(x, y, label=None, xlimit=None, size=(9, 3),fileName=None):
    display.set_matplotlib_formats('svg')
    if len(x) == len(y):
        plt.figure(figsize=size)
        if xlimit and isinstance(xlimit, tuple):
            plt.xlim(xlimit)
        plt.plot(x, y, label=label)
        if label and isinstance(label, str):
            plt.legend()
        if fileName:
            plt.savefig(fileName)
        plt.show()
    else:
        raise ValueError("x 和 y 的长度不一致!")

3. 绘图

原始横坐标数组是一个字符串型的,无法直接用于plot(x, y)中的xwkZgUtC

time[0:10]
array([['2019-01-01 00:14:00'],
       ['2019-01-01 00:29:00'],
       ['2019-01-01 00:44:00'],
       ['2019-01-01 00:59:00'],
       ['2019-01-01 01:14:00'],
       ['2019-01-01 01:29:00'],
       ['2019-01-01 01:44:00'],
       ['2019-01-01 01:59:00'],
       ['2019-01-01 02:14:00'],
       ['2019-01-01 02:29:00']], dtype='<U19')

将字符串的时间转换成date对象

x_time= [datetijsme.strptime(d, '%Y-%m-%d %H:%M:%S') for d in time]  

绘图

myplot(x_time, y_num, label='car_num', 
       xlimit=(date(2019, 1, 1), date(2019, 1, 22) ),
       size=(12, 3),
       fileName='my_dataset-car-num.svg')
android

python使用pyplot绘制横轴为时间的图

4.自定义x轴日期显示格式

如果想自定义坐标轴显示格式,可以更改一下绘图方法,通过DateFormatter来实现。

from matplotlib.dates import DateFormatter

def myplot(x, y, label=None, xlimit=None, size=(9, 3),fileName=None):
    display.set_matplotlib_formats('svg')
    if len(x) == len(y):
        plt.figure(figsizejavascript=size)
        if xlimit and isinstance(xlimit, tuple):
            plt.xlim(xlimit)
        plt.plot(x, y, label=label)
android        if label and isinstance(label, str):
            plt.legend()
        if fileName:
            plt.savefig(fileName)
        # ======= 以下是新增代码
        ax = plt.gca()
        formatter = DateFormatter('%H:%M')
        ax.xaxis.set_major_formatter(formatter) # 设置时间显示格式   
        # ==============
        plt.show()
    else:
        raise ValueError("x 和 y 的长度不一致!")

效果如下:

python使用pyplot绘制横轴为时间的图

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号