我正试图根据日期绘制信息。我有一个格式为“01/02/1991”的日期列表。
我通过执行以下操作来转换它们:
x = parser.parse(date).strftime('%Y%m%d'))
得到19910102
然后我尝试使用num 2date
import matplotlib.dates as dates
new_x = dates.num2date(x)
绘图:
plt.plot_date(new_x, other_data, fmt="bo", tz=None, xdate=True)
但我得到一个错误。它说“ValueError:year is out of range”.有解决方案吗?
5条答案
按热度按时间lyfkaqu11#
您可以使用
plot()
而不是plot_date()
更简单地完成此操作。首先,将字符串转换为Python
datetime.date
的示例:然后绘图:
结果:
jexiocij2#
我的声誉太低,无法在@bernie回复中添加评论,回复为@user1506145。我遇到了同样的问题。
它的答案是一个区间参数,它可以解决问题
8fsztsew3#
正如@KyssTao所说,
help(dates.num2date)
表示x
必须是一个浮点数,给出自0001- 01-01以来的天数加1。因此,19910102
不是2/Jan/1991,因为如果你从0001-01- 01开始计算19910101天,你会得到54513年或类似的数字(除以365.25,一年中的天数)。使用
datestr2num
代替(参见help(dates.datestr2num)
):hvvq6cgz4#
调整@Jacek Szałńga的答案,以使用图形
fig
和相应的轴对象ax
:juud5qan5#