我经常在ipython shell或ipython笔记本中进行交互式工作。
说,我有pandas.DataFrame
DatetimeIndex
,如下所示:
idx = pd.date_range("12:00", periods=400000, freq="S")
df = pd.DataFrame({"temp":np.random.normal(size=len(idx))}, index=idx)
为了绘制它,我可以简单地做:
plt.plot(df.temp, '.')
正如我所看到的,我不必指定x轴数据,因为它是从DataFrame很好地推断出来的,我也不必指定我实际上希望x轴是基于日期的。 (plt.plot_date
)的时代已经过去了
太棒了!
但x轴在两个方面看起来很丑:
可以几乎修复此问题,例如像这样:
plt.plot(df.temp, '.')
import matplotlib.dates as mdates
plt.gca().xaxis.set_major_formatter(
mdates.DateFormatter('%d-%m-%Y %H:%M:%S'))
plt.gcf().autofmt_xdate()
因此,通过将代码大小增加300%,几乎可以得到一个很好的情节。
现在问我的问题:
我可以为我的生活不记得这些2..3行,在制作基于日期的情节时我总是要输入。它使界面感觉笨拙和缓慢。我总是要谷歌寻求解决方案......
我能否以某种方式设置matplotlib,它会记住我的个人默认值与基于日期的绘图有关?
我想,我实际上可以入侵plot
函数。但也许有一种方法可以使用这些我无法找到的matplotlib.rc_params
。
正如我上面所说,plt.plot
对于实际猜测我想要的东西还有很长的路要走。它猜测x轴数据是DataFrame的索引..并且它猜测它应该实际绘制基于x轴的日期而不是日期的数字表示。我怎样才能添加一些东西?
我想甚至可能会给它一些提示:
plt.plot(df.temp, '.', date_fmt='%d-%m-%Y %H:%M:%S')
或
plt.plot(df.temp, '.', autofmt_xdate=True)
答案 0 :(得分:2)
您可以使用DateFormatter
:
import matplotlib.dates as mdates
fig, ax = plt.subplots(figsize=(8,5))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y %H:%M:%S'))
#rotates the tick labels automatically
fig.autofmt_xdate()
ax.plot(df["T"], '.')
plt.show()