如何用matplotlib绘制正确的日期?

时间:2014-04-26 11:55:13

标签: python datetime matplotlib pandas

我尝试使用Python,pandas和matplotlib,但我遇到了一些noob问题。

我的简单脚本:

from dateutil.relativedelta import relativedelta
import Quandl
start_date = datetime.datetime.now() - relativedelta(days=5)
data_frame = Quandl.get("GOOG/NASDAQ_AAPL",
  trim_start=start_date)

import matplotlib  
matplotlib.use('Agg')
import matplotlib.pyplot as plt

plt.plot(data_frame['Close'].index, data_frame['Close'])
plt.gcf().autofmt_xdate()
plt.savefig('plot')
plt.close()

绘制这个数字: enter image description here

如何让x轴打印出格式良好的日期(可能是2014-04-24)?

我猜它与data_frame['Close'].index有关。它打印出来:

<class 'pandas.tseries.index.DatetimeIndex'>
[2014-04-21, ..., 2014-04-25]
Length: 5, Freq: None, Timezone: None

我期待从我正在阅读的在线文章[1950-01-31 00:00:00, ..., 2013-02-28 00:00:00]开始。所以我在讨论是否需要使用像datetime.strptime这样的东西,但我不确定这是否正确;并且我不确定如何能够简洁地使用日期时间索引。

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

matplotlib中,您可以直接修改major_formater来获得所需的x刻度格式:

import matplotlib.dates as mdates
plt.plot(data_frame['Close'].index, data_frame['Close'])
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y/%b/%d-%H:%S'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=1))
plt.xticks(rotation=45, fontsize = 8)

enter image description here