【发布时间】:2019-06-28 12:46:21
【问题描述】:
我目前有一个如下所示的日期框架:
如果我打印出数据类型,时间是 datetime.date,价格是 numpy.float64。当我尝试使用以下代码绘制此图时,我得到以下图:
from matplotlib import dates
import matplotlib.pyplot as plt
plt.figure(figsize=(20, 10))
plt.plot(df['time'], df['price']*100, color='royalblue', marker='o', markersize=8, linewidth=3.5)
我很困惑为什么 x 轴被弄乱了,以及为什么日期被按原样格式化。理想情况下,我只希望日期与数据框的 time 列中指定的日期相同。其他一些 Stackoverflow 帖子建议使用 DateFormatter,所以我尝试添加以下行:plt.gca().xaxis.set_major_formatter(dates.DateFormatter('%Y-%m-%d'))。但是,我得到错误“列表”对象没有属性“DateFormatter”。希望获得有关如何修复 x 轴上的时间格式的建议(理想情况下,应该只有 5 个刻度对应于指定的时间)。谢谢!
【问题讨论】:
-
不要将代码中的某些列表与您导入的模块同名。或使用
matplotlib.dates.DateFormatter('%Y-%m-%d %H') -
检查“日期”的类型
-
@Will 的类型
dates是list从错误中看出。 -
就这么简单:如果您收到错误
'list' object has no attribute 'DateFormatter',那么您的代码中某处就有一个名为dates的列表。 -
@JaneSully 您的错误表明您正在尝试访问列表对象上的“DateFormatter”属性。这意味着“日期”是您代码中的一个列表,而不是您认为的列表。
标签: python datetime matplotlib datetime-format axis-labels