一、時間序列作圖
對時間序列作圖時,如果橫坐標刻度為日期數據的話,利用Matplotlib.pyplot作出的圖並不理想(不連續)。例如,對如下格式數據進行畫圖:
可以看出,上圖效果並不理想。將橫軸刻度改為數字。
二、對時間序列進行注釋
若要對上圖的其中一些數據進行注釋,因為橫軸刻度為數字,不是日期,因此在注釋上存在一些難度。下面的數據為上圖數據的一部分。
兩者間只有日期索引是相同的,因此想辦法將上圖中數據的日期索引改為數字索引,注意兩者的數字索引應一致,才能根據數字索引找到對應的數據。關鍵在於將數據的索引轉為list格式。這樣日期和數字索引就對應上了。
這樣,通過日期就能找到對應的數字數字索引。
好了,就講到這里吧,下面放上一段注釋及畫圖的代碼:
import datetime timedelta1 = datetime.timedelta(days=2) timedelta2 = datetime.timedelta(minutes=10) for i in range(0,len(df['open_dt'])): plt.figure(i) plt.figure(figsize=(15,6)) ax = plt.subplot(111) jiacha = data['jiacha'][(pd.to_datetime(df['open_dt'][i]) - timedelta1)\ :(pd.to_datetime(df['close_dt'][i])+timedelta1)] ix = list(jiacha.index) jiacha1 = np.array(jiacha) jiacha1 = pd.Series(jiacha1) plt.plot(jiacha1) plt.annotate('open',xy=(ix.index(pd.to_datetime(df['open_dt'][i])),df['open_zly'][i]-df['open_dy'][i]), xytext=(ix.index(pd.to_datetime(df['open_dt'][i])),df['open_zly'][i]-df['open_dy'][i]+10), arrowprops = dict(facecolor='red',shrink=0.1)) plt.annotate('close',xy= (ix.index(pd.to_datetime(df['close_dt'][i])),df['close_zly'][i]-df['close_dy'][i]), xytext=(ix.index(pd.to_datetime(df['close_dt'][i])),df['close_zly'][i]-df['close_dy'][i]+10), arrowprops = dict(facecolor='black',shrink=0.1)) plt.show()