Don*_*n P 5 python datetime matplotlib
我有一个非常标准的数据集,有 2 列,1 列用于日期,1 列用于值。我将它们放入两个数组中:
dates
['1/1/2014', '1/2/2014', '1/3/2014', ...]
values
[1423, 4321, 1234, ...]
Run Code Online (Sandbox Code Playgroud)
如何创建一个简单的折线图,其中 y 轴为“值”,x 轴为“日期”?
我尝试过的:
我可以在 1 行中仅用“值”绘制“Hello world”线图(太棒了):
import numpy as np
import matplotlib.pyplot as plt
plt.plot(values)
Run Code Online (Sandbox Code Playgroud)
接下来,我们添加“日期”作为 x 轴。此时我被困住了。如何将我的“日期”数组(字符串)转换为可绘制的数组?
看看示例,我相信我们应该将字符串转换为 Python Date 对象。让我们导入这些库:
import datetime
import matplotlib.dates
Run Code Online (Sandbox Code Playgroud)
好的,现在我可以将字符串转换为日期time.strptime(dates[1], '%m/%d/%Y')。如何转换整个数组?我可以写一个循环,但假设有更好的方法。
我什至不能百分百确定我是否走在制作可用于“日期”与“值”的东西的正确道路上。如果您知道制作此图的代码(我假设一旦您了解 Python + 库,它就非常基础),请告诉我。
好的,知道这是 1 班轮。操作方法如下:
因此,您从值和日期(作为字符串)数组开始:
dates = ['1/1/2014', '1/2/2014', '1/3/2014', ...]
values = [1423, 4321, 1234, ...]
Run Code Online (Sandbox Code Playgroud)
然后将字符串日期转换为日期对象:
date_objects = [datetime.strptime(date, '%m/%d/%Y').date() for date in dates]
Run Code Online (Sandbox Code Playgroud)
然后只是情节。
plt.plot(date_objects, values)
Run Code Online (Sandbox Code Playgroud)
请记住,您可以使用xticks任何您想要的东西来代替值。所以,你可以做一个
xVals = range(len(values))
plot(xVals, values)
xticks(xVals, dates)
Run Code Online (Sandbox Code Playgroud)
如果您的日期像您一样是线性的,那么这是可以的。否则,您始终可以获得一个量化日期的数字(从第一天算起的天数(请参阅模块datetime)并将其用于xVals.