我有10年以上的时间序列,并希望将xtick标签缩写为2位数年份。 我怎么能这样做?
import matplotlib.pyplot as plt
import datetime as dt
import pandas as pd
import pandas.io.data as web
stocklist = ['MSFT']
# read historical prices for last 11 years
def get_px(stock, start):
return web.get_data_yahoo(stock, start)['Adj Close']
today = dt.date.today()
start = str(dt.date(today.year-11, today.month, today.day))
px = pd.DataFrame({n: get_px(n, start) for n in stocklist})
plt.plot(px.index, px[stocklist[0]])
plt.show()
答案 0 :(得分:2)
这会以可疑的方式深入研究pandas
内部,但
ax = plt.gca()
ax.get_xaxis().get_major_formatter().scaled[365] = '%y'
plt.draw()
答案 1 :(得分:1)
我找到了此代码,您可以修改格式:
ax = plt.gca()
xax = ax.get_xaxis() # get the x-axis
adf = xax.get_major_formatter() # get the auto-formatter
adf.scaled[1. / 24] = '%H:%M' # set the < 1d scale to H:M
adf.scaled[1.0] = '%Y-%m-%d' # set the > 1d < 1m scale to Y-m-d
adf.scaled[30.] = '%y-%b' # set the > 1m < 1Y scale to Y-m
adf.scaled[365.] = '%Y' # set the > 1y scale to Y
请注意显示adf.scaled[30.] = '%y-%b' # set the > 1m < 1Y scale to Y-m
的行。小y
表示2位数字的年份(大Y是4位数字),小b
表示3个字符的月份(小m表示数字月份)。我相信这些是Python中非常标准的格式类型。