鉴于以下内容:
import pandas as pd
import numpy as np
%matplotlib inline
df = pd.DataFrame(
{'YYYYMM':[201603,201503,201403,201303,201603,201503,201403,201303],
'Count':[5,6,2,7,4,7,8,9],
'Group':['A','A','A','A','B','B','B','B']})
df['YYYYMM']=df['YYYYMM'].astype(str).str[:-2]
t=df.pivot_table(df,index=['YYYYMM'],columns=['Group'],aggfunc=np.sum)
fig, ax = plt.subplots(1,1)
t.plot(ax=ax)
我想将xaxis
tick_labels
(年)和相应的行移到右侧,为yaxis
ticks
和{{1}腾出空间}。
我尝试了这个(在labels
之后:
t.plot(ax=ax)
但它只改变了界限:
提前致谢!
答案 0 :(得分:1)
需要恢复为int
,然后使用FormatStrFormatter
:
from matplotlib.ticker import FormatStrFormatter
df['YYYYMM'] = df['YYYYMM'].astype(str).str[:-2].astype(int)
t = df.pivot_table(df, index=['YYYYMM'], columns=['Group'], aggfunc=np.sum).loc[:, 'Count']
fig, axes = plt.subplots(1, 1)
margin = 0.5
t.plot(ax=axes, xticks=t.index.tolist(), xlim=(t.index.min()-margin, t.index.max()+margin), ylim=(t.min().min()-margin, t.max().max()+margin))
axes.xaxis.set_major_formatter(FormatStrFormatter('%.0f'))
plt.show()
包括.loc[:, 'Count']
会让你有一个不同的传奇。
答案 1 :(得分:1)
你可以这样做:
import datetime
dates = pd.to_datetime(t.index)
plt.plot(dates, t.Count.A)
plt.plot(dates, t.Count.B)
plt.xlim(datetime.date(2012,1,1), datetime.date(2017,1,1))
plt.show()