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)
中的x
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= [datetime.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')
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(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)
ax = plt.gca()
formatter = DateFormatter('%H:%M')
ax.xaxis.set_major_formatter(formatter)
plt.show()
else:
raise ValueError("x 和 y 的长度不一致!")
效果如下:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)