首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Python的matplotlib在x轴上绘制日期

使用Python的matplotlib在x轴上绘制日期
EN

Stack Overflow用户
提问于 2018-09-25 01:10:43
回答 2查看 0关注 0票数 0

我正在尝试根据日期绘制信息。我有一个日期列表,格式为“01/02/1991”。

我通过执行以下操作转换它们:

x = parser.parse(date).strftime('%Y%m%d'))

这使 19910102

然后我尝试使用num2date

import matplotlib.dates as dates
new_x = dates.num2date(x)

绘图:

plt.plot_date(new_x, other_data, fmt="bo", tz=None, xdate=True)

但是我收到了一个错误。它说“ValueError:年份超出范围”。有解决方案?

EN

回答 2

Stack Overflow用户

发布于 2018-09-25 10:06:23

作为@KyssTao一直说,help(dates.num2date)说,x已经是一个浮动以来0001-01-01加一个给人的天数。因此,19910102不是1991年1月2日,因为如果您从0001-01-01算起19910101天,您将获得54513年或类似的东西(除以365.25,一年中的天数)。

datestr2num改为使用(见help(dates.datestr2num)):

new_x = dates.datestr2num(date) # where date is '01/02/1991'
票数 0
EN

Stack Overflow用户

发布于 2018-09-25 10:59:08

您可以更简单地使用plot()而不是使用plot_date()

首先,将您的字符串转换为Python的实例datetime.date

import datetime as dt

dates = ['01/02/1991','01/03/1991','01/04/1991']
x = [dt.datetime.strptime(d,'%m/%d/%Y').date() for d in dates]
y = range(len(x)) # many thanks to Kyss Tao for setting me straight here

然后情节:

import matplotlib.pyplot as plt
import matplotlib.dates as mdates

plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())
plt.plot(x,y)
plt.gcf().autofmt_xdate()

结果:

在此处输入图像描述
在此处输入图像描述
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档