【问题标题】:Plot dates on x-axis when data is obtained through index通过索引获取数据时在 x 轴上绘制日期
【发布时间】:2017-10-10 23:54:10
【问题描述】:

如何将日期用作 x 轴,同时保持将索引用作数据点的粒度?

数据如下所示:

这就是情节的样子。但是,日期已关闭。我通过使用data.index 或data.date.index 获得这些结果:

fig, ax = plt.subplots(1,1,figsize=(10,6))
ax.plot(data.date.index, data.Euro, label='EUR')

我使用data.date 得到这个情节。该图未显示所有数据点,但日期正确:

fig, ax = plt.subplots(1,1,figsize=(10,6))
ax.plot(data.date, data.Euro, label='EUR')

什么是保持日期表示并正确显示所有数据点的最简单方法?

【问题讨论】:

  • 什么是data.date?它的类型是什么?什么是数据?
  • pd.to_datetime(data.date, format='%y') - 将其传递给函数。
  • 我的错,添加了数据头。
  • @COLDSPEED 太棒了,ax.plot(pd.to_datetime(data.date, format='%Y%m%d'), data.Euro, label='EUR') 解决了它。非常感谢。

标签: python matplotlib plot


【解决方案1】:

按照coldspeed的建议,以下对我有用:

fig, ax = plt.subplots(1,1,figsize=(10,6))
ax.plot(pd.to_datetime(data.date, format='%Y%m%d'), data.Euro, label='EUR')

plt.xlabel('Time', fontsize=14)
plt.ylabel('1 USD in EURO', fontsize=14)
ax.legend(loc='upper right')

plt.show()

另一种解决方案是设置一个索引列,加载时解析该列:

dateparse = lambda dates: pd.to_datetime(dates, format='%Y%m%d')
data = pd.read_csv('../input/cd07244106ca8b3f.csv',
                   parse_dates=['date'],
                   index_col='date',
                   date_parser=dateparse)

然后 稍后只需使用:

ax.plot(data.index, data.Euro, label='EUR')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2016-06-24
    相关资源
    最近更新 更多