在 Python 中绘制日期与值

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 + 库,它就非常基础),请告诉我。

Don*_*n P 6

好的,知道这是 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)


ssm*_*ssm 1

请记住,您可以使用xticks任何您想要的东西来代替值。所以,你可以做一个

xVals = range(len(values))
plot(xVals, values)
xticks(xVals, dates)
Run Code Online (Sandbox Code Playgroud)

如果您的日期像您一样是线性的,那么这是可以的。否则,您始终可以获得一个量化日期的数字(从第一天算起的天数(请参阅模块datetime)并将其用于xVals.