假设有一个时间序列,我想用matplotlib来绘制:
dates = pd.date_range(start='2011-01-01', end='2012-01-01')
s = pd.Series(np.random.rand(1, len(dates))[0], index=dates)
matplotlib中的GUI后端具有一个很好的特性,它们在窗口中显示光标坐标。当我使用它的plot()方法绘制熊猫系列时,如下所示:
fig = plt.figure()
s.plot()
fig.show()
光标的x弦显示在窗口底部的完整中,如图1所示。
但是,当我用pyplot绘制同一系列的时候:
fig = plt.figure()
plt.plot(s.index, s.values)
fig.show()
完整的日期只在我放大时显示,在默认视图中,我只能看到蒙-yyy(见图2),如果这个系列更长的话,我只会看到一年。
在我的项目中,有使用plt.plot()从时间序列数据中绘制复杂的多序列图的函数,所以当我在GUI中查看结果时,我只看到特写中的完整日期。我使用的是ipython3 v.4.0,我主要使用的是MacOSX后端,但是我在Linux上尝试了TK、Qt和GTK后端,没有任何不同的行为。
到目前为止,关于如何在任意缩放级别上获得GUI显示的完整日期,我有两个想法:
然而,在尝试上述任何一种方法之前,我需要确定是否有更好的更快捷的方法来将完整的日期打印到图形窗口中。我想是的,因为熊猫正在使用它,但是我在pandas、示例或者其他网上找不到它,这不是这两个电话中的任何一个:
ax.xaxis_date()
fig.autofmt_xdate()
谁来告诉我。
发布于 2016-11-28 09:17:02
格式化信息的钩子是Axes.format_coord
或Axes.fmt_xdata
。标准模板是在matplotlib.dates
(加上熊猫的一些补充 )中定义的。一个基本的解决办法可以是:
import matplotlib.dates
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
dates = pd.date_range(start='2011-01-01', end='2012-01-01')
series = pd.Series(np.random.rand(len(dates)), index=dates)
plt.plot(series.index, series.values)
plt.gca().fmt_xdata = matplotlib.dates.DateFormatter('%Y-%m-%d')
plt.show()
https://stackoverflow.com/questions/40847064
复制相似问题