<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          用 pandas + matplotlib 繪制精美的K線圖

          共 1691字,需瀏覽 4分鐘

           ·

          2022-01-14 01:19

          大家好,我是早起。

          在使用 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ù)和文件操作(長文系列第③篇)

          牛逼!Python錯(cuò)誤、異常和模塊(長文系列第④篇)


          瀏覽 66
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  无码一区二区激情 | 三级片无码AV在线 | 最近中文字幕免费mv第一季歌词在线观看 | 91av在线在线 | 翔田千里AV在线 |