用 Python 绘制股票的K线图
利用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出来的图长这样