利用python的matplotlib.finance包中的candlestick方法可以很方便的畫出股票的K線圖(蠟燭圖)
candlestick分兩種:
candlestick_ochl 和 candlestick_ohlc,其本質是一樣的,只是需要的dataframe中數據的順序不同。
candlestick_ochl:需要的數據結構為(date,open,close,high,low) 既:日期,開盤價,收盤價,最高價,最低價
candlestick_ohlc:需要的數據結構為(date,open,high,low,close)
以下以600000為例,plot其70個交易日的K線圖
from matplotlib import pyplot as plt import matplotlib.finance as mpf from matplotlib.pylab import date2num import pandas as pd import datetime %matplotlib inline quotes = [] stock = pd.read_csv('data/stock_daily_inversed/SH/600000.csv',index_col=0) for row in range(70): if row == 0: sdate = str(stock.loc[row,'trade_date']) # 注意:loc返回數值,iloc返回dataframe sdate_change_format = sdate[0:4]+'-'+sdate[4:6]+'-'+sdate[6:] sdate_num = date2num(datetime.datetime.strptime(sdate_change_format,'%Y-%m-%d')) #日期需要特定形式,這里進行轉換 sdate_plt = sdate_num else: sdate_plt = sdate_num + row sopen = stock.loc[row,'open'] shigh = stock.loc[row,'high'] slow = stock.loc[row,'low'] sclose = stock.loc[row,'close'] datas = (sdate_plt,sopen,shigh,slow,sclose) # 按照 candlestick_ohlc 要求的數據結構准備數據 quotes.append(datas) fig, ax = plt.subplots(facecolor=(0, 0.3, 0.5),figsize=(12,8)) fig.subplots_adjust(bottom=0.1) ax.xaxis_date() plt.xticks(rotation=45) #日期顯示的旋轉角度 plt.title('600000') plt.xlabel('time') plt.ylabel('price') mpf.candlestick_ohlc(ax,quotes,width=0.7,colorup='r',colordown='green') # 上漲為紅色K線,下跌為綠色,K線寬度為0.7 plt.grid(True)
plot出來的圖長這樣