用 pandas + matplotlib 繪制精美的K線圖
大家好,我是早起。
在使用 Python 進(jìn)行金融數(shù)據(jù)分析時(shí),繪制 K線圖 是很常見的需求。
但如果使用 matplotlib 從 0 開始繪制,一步一步添加日線、均線、MACD、成交量等指標(biāo)時(shí),則會顯得十分麻煩,且代碼很難復(fù)用。
幸運(yùn)的是在 matplotlib 中提供接口(matplotlib.finance)直接繪制K線,現(xiàn)在 matplotlib.finance 已經(jīng)獨(dú)立成庫 mplfinance,更方便的讓我們使用。
本文就將介紹如何使用 mplfinance 快速繪制專業(yè)的K線圖,文末也有完整的數(shù)據(jù)與源碼下載。
01
安裝與數(shù)據(jù)準(zhǔn)備
上面已經(jīng)說到,mplfinance 是一個(gè)獨(dú)立的庫,所以直接使用 pip 安裝即可,沒有任何難度
pip?install?mplfinance
至于在數(shù)據(jù)準(zhǔn)備上,根據(jù)我的開發(fā)經(jīng)驗(yàn),越懶人版的繪圖庫對數(shù)據(jù)要求則越嚴(yán)格,所以在使用之前,我們需要將數(shù)據(jù)整理成指定的格式,下面是某股票(平安銀行000001.sz)的對應(yīng)數(shù)據(jù)
如上圖所示,數(shù)據(jù)必須是Pandas DataFrame格式,且必須按照順序包含開盤價(jià)、最高價(jià)、最低價(jià)、收盤價(jià)以及成交量,同時(shí)索引需要是pandas支持的時(shí)間類型。
關(guān)于如何獲得、清洗得到這樣的數(shù)據(jù)將不是本文的分享內(nèi)容,下面僅介紹如何基于這樣的數(shù)據(jù)進(jìn)行繪圖。
02
mplfinance常見用法
基礎(chǔ)使用
首先需要導(dǎo)入
import?mplfinance?as?mpf
接下來,在上述數(shù)據(jù)基礎(chǔ)上一行代碼即可生成簡易價(jià)格走勢圖
mpf.plot(df_new,?type='line')

添加移動均線
通過設(shè)置 mav 參數(shù)可以添加對應(yīng)的移動均線,例如添加5日、10日、30日移動均線
mpf.plot(df_new,?type='line',mav=(5,10,30))

需要注意的是,這里的x日移動均線并不是通過我們數(shù)據(jù)的時(shí)間索引計(jì)算而來,僅是移動x個(gè)索引位置而來,由于我們數(shù)據(jù)時(shí)間精度為1天,所以恰好是對應(yīng)的x天移動均線。
如果索引是分鐘級數(shù)據(jù),那么設(shè)置 mav 得到的就是x分鐘均線!
添加成交量
通過設(shè)置 volume 參數(shù),可以進(jìn)一步添加成交量
mpf.plot(df_new,?type='line',mav=(5,10,30),?volume=True)

制作蠟燭圖
通過設(shè)置 type 參數(shù)可以繪制更專業(yè)的蠟燭圖,由于上面的數(shù)據(jù)時(shí)間維度過長,繪制蠟燭圖會導(dǎo)致很難看清細(xì)節(jié)。
所以下面繪制最后 40 個(gè)交易日的蠟燭圖,并添加成交量與 3、6、9 日均線
mpf.plot(df_new.tail(40),?type='candle',mav=(3,6,9),?volume=True)

展示非交易時(shí)間
上面的圖是連續(xù)的,但交易日并不是天天都是,每天也有指定時(shí)間,通過設(shè)置 show_nontrading 參數(shù),可以按照交易時(shí)間繪制,將非交易時(shí)間添加為空白
mpf.plot(df_new,type='candle',mav?=?(3),show_nontrading=True,?volume=True)

至此 mplfinance 的基本使用就介紹完畢,相比來說還是比較容易上手使用的。
?pyecharts
雖然 matplotlib 也可以繪制動態(tài)圖,但是由于 matplotlib 的特性,展示起來并不是很方便。
如果需要能交互式操作數(shù)據(jù),拖動時(shí)間軸等功能,可以嘗試使用 pyecharts,但由于不像 mplfinance 封裝好開箱即用,代碼寫起來還是需要相當(dāng)一定時(shí)間的,大家可以自行選擇
推薦閱讀
牛逼!Python常用數(shù)據(jù)類型的基本操作(長文系列第①篇)
牛逼!Python的判斷、循環(huán)和各種表達(dá)式(長文系列第②篇)
推薦閱讀
牛逼!Python常用數(shù)據(jù)類型的基本操作(長文系列第①篇)
牛逼!Python的判斷、循環(huán)和各種表達(dá)式(長文系列第②篇)
