使用matplotlib輕鬆繪製股票K線圖

文章同步發布:個人博客州的先生|個人博客 - 君莫舞,君不見玉環飛燕皆塵土、個人微信:州的先生

K線圖是看懂股票走勢的最基本知識,K線分為陰線和陽線,陰線和陽線都包含了最低價、開盤價、最高價和收盤價,一般都K線如下圖所示:

度娘說:K線圖源於日本德川幕府時代(1603~1867年),被當時日本米市的商人用來記錄米市的行情與價格波動,後因其細膩獨到的標畫方式而被引入到股市及期貨市場。通過K線圖,我們能夠把每日或某一周期的市況現完全記錄下來,股價經過一段時間的盤檔後,在圖上即形成一種特殊區域或形態,不同的形態顯示出不同意義。

在使用Python進行股票分析的過程中,我們可以很容易的對K線圖進行繪製,下面介紹兩種情形下的K線圖繪製:

一、股票數據來源於Matplotlib:

# 導入需要的庫nimport tushare as tsnimport matplotlib.pyplot as pltnimport matplotlib.finance as mpfn n%matplotlib inlinen n# 設置歷史數據區間ndate1 = (2014, 12, 1) # 起始日期,格式:(年,月,日)元組ndate2 = (2016, 12, 1) # 結束日期,格式:(年,月,日)元組n# 從雅虎財經中獲取股票代碼601558的歷史行情nquotes = mpf.quotes_historical_yahoo_ohlc(601558.ss, date1, date2)n n# 創建一個子圖 nfig, ax = plt.subplots(facecolor=(0.5, 0.5, 0.5))nfig.subplots_adjust(bottom=0.2)n# 設置X軸刻度為日期時間nax.xaxis_date()n# X軸刻度文字傾斜45度nplt.xticks(rotation=45)nplt.title("股票代碼:601558兩年K線圖")nplt.xlabel("時間")nplt.ylabel("股價(元)")nmpf.candlestick_ohlc(ax,quotes,width_=1.2,colorup=r,colordown=green)nplt.grid(True)n

繪製出來的K線圖如下:

二、股票數據來源於Tushare:

因為從Tushare中獲取到的數據為Pandas的DataFrame結構,需要將其轉換為matplotlib.finance.candlestick_ohlc()方法能夠處理的數據結構。

from matplotlib.pylab import date2numnimport datetimen n# 對tushare獲取到的數據轉換成candlestick_ohlc()方法可讀取的格式ndata_list = []nfor dates,row in hist_data.iterrows():n # 將時間轉換為數字n date_time = datetime.datetime.strptime(dates,%Y-%m-%d)n t = date2num(date_time)n open,high,low,close = row[:4]n datas = (t,open,high,low,close)n data_list.append(datas)n n# 創建子圖nfig, ax = plt.subplots()nfig.subplots_adjust(bottom=0.2)n# 設置X軸刻度為日期時間nax.xaxis_date()nplt.xticks(rotation=45)nplt.yticks()nplt.title("股票代碼:601558兩年K線圖")nplt.xlabel("時間")nplt.ylabel("股價(元)")nmpf.candlestick_ohlc(ax,data_list,width=1.5,colorup=r,colordown=green)nplt.grid()n

同樣也能繪製會一樣的K線圖:

嗯,是不是很簡單?

推薦閱讀:

Windows下MySQL 5.7.17壓縮版安裝過程的坑
黃哥推薦學習Python 10本好書。
為什麼 x in range(1000000000000001) 的執行速度這麼快
自己寫的Python函數,如何調用?

TAG:股票 | Python | 数据可视化 |