Python,matplotlib,带日期的打印

2024-06-01 08:48:49 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我第一次在这里提问。我对编程很陌生,也不是很有天赋,我目前正在做一个小程序,我试图根据日期绘制欧元和美元的价格,我遇到了一个无法在x轴上绘制日期的问题。我一直在网上寻找帮助和答案,但没有任何好运气。总之,到目前为止我的代码是:

j=1
dates = []
price = []
with open('EURUSD_day.csv', 'r') as f:
    reader = csv.reader(f)
    print (f)
    for row in reader:
        if j > 1:
        dates.append(row[1])
        dates.append(float(row[6]))
    j = j + 1
import datetime as dt
dates = []
x = [dt.datetime.strptime(d, '%m/%d/%Y').date() for d in dates]
y = range(len(x))
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y'))
plt.plot
plt.gcf().autofmt_xdate
plt.show()

谢谢你的帮助!在


Tags: csvinfordatetimeas编程dt绘制
2条回答

代码中有几个问题。实际上不仅仅是一对。首先声明dates=[],并用从文件中读取的日期填充它,这样做也很奇怪!

您可以将日期填写到如下所示的列表中:

[“字符串元素”,float,“String element”,float….]

然后您就忘记了这一点,因为您在import语句之后再次声明了一个新的空列表dates=[],然后使用一个生成器遍历这个空列表

[dt.datetime.strptime(d, '%m/%d/%Y').date() for d in dates]

正在创建空的日期时间对象。最后你从来没有真正调用plot函数,因为

^{pr2}$

你从不发送任何实际数据。你的图没有任何参数:plt.plot([1,2,3,4])。最后你又重复了同样的错误,因为

>>> plt.gcf().autofmt_xdate
<bound method Figure.autofmt_xdate of <matplotlib.figure.Figure object at 0x02F97FB0>>

您再也不会调用自动格式化日期的实际方法plt.gcf().autofmt_xdate

请确认您确实拥有继续下一步计划所需的一切。 这意味着:

  1. 从文件中读入数据的格式是可以处理的。这意味着,如果您计划用striptime解析日期,那么您将得到一个格式为%m/%d/%Y:[01/1/2012, 01/2/2012...]格式的日期列表
  2. 在用striptime解析日期之后,您将得到日期时间。日期时间物体!(有意义的对象列表)
  3. 你真的派他们去密谋。在

也可以使用plt.plot_dates函数来绘制它们,该函数为您处理大多数漂亮的日期格式。

我强烈建议您从空闲开始,开始定义简短而清晰的小函数,并逐步实现完整的解决方案。希望对你有所帮助。

我不允许评论,因为在这个stackexchange上我还没有50个声誉。然而,这应该是一个评论,而不是一个答案,因为它不能真正回答你的问题。

你的代码有很多问题。首先,您实际上需要绘制数据:

你的plt.绘图行应该是这样的:

plt.plot(x, y)

我不完全确定这是否可行,因为我认为pyplot需要x和y轴的数字,而您的x列表目前是字符串。这也意味着更改x轴的格式会有问题,因为DateFormatter期望的是一个datetime对象,而不是一个字符串。

忽略了以下语法错误:

^{pr2}$

这不是有效的python代码。想必你是说下面这些?

for row in reader:
    if j > 1:
        dates.append(row[1])
        dates.append(float(row[6]))

无论如何,为什么不把这些转换成日期时间.日期当你从你的档案里读出来的时候?

相关问题 更多 >