我如何绘制图形丝毫5分钟的时间间隔

时间:2015-12-07 18:11:09

标签: python json datetime graph plot

我遇到了在python中绘制图形的问题。 我有一个.json file.i必须从此文件中读取“times”。 程序可以从文件读取每个“时间”,我将所有这些添加到列表中。 我想用5分钟间隔绘制图形。然后我选择了以00或05结尾的列表中的时间,并且我添加到另一个列表中。 顺便说一句,我的list2有这样的对象“2015-1-03 1:15:00” 而我的list1有20等整数。

最后,当我尝试用该代码绘制图表时:

plt.figure(2)
plt.plot(range(len(pd1)), list1)
plt.xticks(range(len(grapdict)), list2, rotation=25)
pl.show()

打印:

ValueError: x and y must have same first dimension 

我从这个网站搜索。我发现x不能列出。我尝试了一些事情,我搜索了日期时间等,但又错了:(

我怎么能以这种方式或其他方式做到这一点?还有比我更基本的方式吗?

我只是想绘制一个图表,我希望它的x轴从8:27(示例)开始,我必须以8:47(示例)结束。但是只能在图表上看到8:30,8:35,8,40,8:45(间隔5分钟)。这些时间可以改变。因为我必须从文件中读取这些内容。如果文件启动时间为3:47(示例),图形必须从3:47开始,并且必须以4:03结束(示例)。但就像我说的那样只有3:50,3:55,4:00必须在图x轴上。我的文件是非常庞大的字典文件。并且时间在d [time]中逐行保存。

1 个答案:

答案 0 :(得分:0)

不考虑你的x和y值在不同的文件中,假设你正在使用matplotlib进行绘图,我认为最好的方法是使用Python datetime包将您的x值转换为datetime个对象。然后matplotlib可以直接将这些对象用于x值。如果您的x值看起来像" 2015-01-03 01:15:00",您可以将它们转换为datetime,如下所示:

import datetime
x = datetime.datetime.strptime( '2015-01-03 01:15:00', '%Y-%m-%d %H:%M:%S')

当您绘制数据时,需要确保x和y列表的长度相同,特别是因为您要从单独的文件中提取它们。然后你可以按照这个例子做你想做的事情:

import matplotlib.pyplot as plt
import datetime
from numpy import sin, arange
from math import pi

starttime = datetime.datetime(2015, 12, 8, 8, 37, 0)
delta = datetime.timedelta(minutes=1)

# Create label locations and strings
sample_times = [starttime + i * delta for i in range(60)]
label_locations = [d for d in sample_times if d.minute % 5 == 0]
labels = [d.strftime('%Y-%m-%d %H:%M:%S') for d in label_locations]

# Create some y data to plot
x = arange(60)
y = sin(x * 2 * pi / 60.0)

# Do the plotting. You'll probably want to make adjustments to accommodate the size 
# of the labels.
plt.plot(sample_times, y)
plt.xticks(label_locations, labels, rotation=90)
plt.show()