2017-03-15 70 views
0

我想創建多軸線圖,其中x軸是使用matplotlib的日期。正如你在下面的圖片中看到的那樣,這些線條很接近,但是在左邊的軸上看起來都是完整的,這是不正確的。使用matplotlib的多軸時間軸線圖

這裏是我的代碼:

df.Date = pd.to_datetime(df.Date) 
fig, ax = plt.subplots() 
ax2= ax.twinx() 
ax2.set_frame_on(True) 
ax2.patch.set_visible(False) 
fig.subplots_adjust(right=0.75) 

years = YearLocator() # every year 
months = MonthLocator() # every month 
yearsFmt = DateFormatter('%Y') 

ax.plot_date(df.Date,df.A, fmt="r-") 
ax.plot_date(df.Date,df.B, fmt="b-") 
ax2.plot_date(df.Date,df.C, fmt="y-") 
ax2.plot_date(df.Date,df.D, fmt="g-") 
ax.xaxis.set_major_locator(years) 
ax.xaxis.set_major_formatter(yearsFmt) 
ax.xaxis.set_minor_locator(months) 
ax.autoscale_view() 
ax2.xaxis.set_major_locator(years) 
ax2.xaxis.set_major_formatter(yearsFmt) 
ax2.xaxis.set_minor_locator(months) 
ax2.autoscale_view() 
plt.setp(ax.get_xticklabels(), fontsize=10, rotation='vertical') 
plt.setp(ax2.get_xticklabels(), fontsize=10, rotation='vertical') 
ax.fmt_xdata = DateFormatter('%b\n%Y') 
ax2.fmt_xdata = DateFormatter('%b\n%Y') 
fig.autofmt_xdate() 

plt.setp(ax.get_xticklabels(), fontsize=10, rotation='vertical') 
ax.set_ylabel('(%)') 
ax2.set_ylabel('(%)') 
ax2.set_xlabel('Date') 
plt.title('Chart 1. ', fontsize=8, weight= 'bold') 
plt.tight_layout() 
plt.show() 

Chart 1

回答

0

需要使用DF1 = df.sort_values(通過= '日期')。當我仔細查看數據時,有幾個日期錯亂地指向數據集的末尾,導致圖回到2002年,導致該線向圖的左側移動。