1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        用 pandas + matplotlib 繪制精美的K線(xiàn)圖

        共 1691字,需瀏覽 4分鐘

         ·

        2022-01-14 01:19

        大家好,我是早起。

        在使用 Python 進(jìn)行金融數(shù)據(jù)分析時(shí),繪制 K線(xiàn)圖 是很常見(jiàn)的需求。

        但如果使用 matplotlib 從 0 開(kāi)始繪制,一步一步添加日線(xiàn)、均線(xiàn)、MACD、成交量等指標(biāo)時(shí),則會(huì)顯得十分麻煩,且代碼很難復(fù)用。

        幸運(yùn)的是在 matplotlib 中提供接口(matplotlib.finance)直接繪制K線(xiàn),現(xiàn)在 matplotlib.finance 已經(jīng)獨(dú)立成庫(kù) mplfinance,更方便的讓我們使用。

        本文就將介紹如何使用 mplfinance 快速繪制專(zhuān)業(yè)的K線(xiàn)圖,文末也有完整的數(shù)據(jù)與源碼下載。



        01

        安裝與數(shù)據(jù)準(zhǔn)備




        上面已經(jīng)說(shuō)到,mplfinance 是一個(gè)獨(dú)立的庫(kù),所以直接使用 pip 安裝即可,沒(méi)有任何難度

        pip?install?mplfinance

        至于在數(shù)據(jù)準(zhǔn)備上,根據(jù)我的開(kāi)發(fā)經(jīng)驗(yàn),越懶人版的繪圖庫(kù)對(duì)數(shù)據(jù)要求則越嚴(yán)格,所以在使用之前,我們需要將數(shù)據(jù)整理成指定的格式,下面是某股票(平安銀行000001.sz)的對(duì)應(yīng)數(shù)據(jù)

        如上圖所示,數(shù)據(jù)必須是Pandas DataFrame格式,且必須按照順序包含開(kāi)盤(pán)價(jià)、最高價(jià)、最低價(jià)、收盤(pán)價(jià)以及成交量,同時(shí)索引需要是pandas支持的時(shí)間類(lèi)型。

        關(guān)于如何獲得、清洗得到這樣的數(shù)據(jù)將不是本文的分享內(nèi)容,下面僅介紹如何基于這樣的數(shù)據(jù)進(jìn)行繪圖。



        02

        mplfinance常見(jiàn)用法



        基礎(chǔ)使用

        首先需要導(dǎo)入

        import?mplfinance?as?mpf

        接下來(lái),在上述數(shù)據(jù)基礎(chǔ)上一行代碼即可生成簡(jiǎn)易價(jià)格走勢(shì)圖

        mpf.plot(df_new,?type='line')

        添加移動(dòng)均線(xiàn)

        通過(guò)設(shè)置 mav 參數(shù)可以添加對(duì)應(yīng)的移動(dòng)均線(xiàn),例如添加5日、10日、30日移動(dòng)均線(xiàn)

        mpf.plot(df_new,?type='line',mav=(5,10,30))

        需要注意的是,這里的x日移動(dòng)均線(xiàn)并不是通過(guò)我們數(shù)據(jù)的時(shí)間索引計(jì)算而來(lái),僅是移動(dòng)x個(gè)索引位置而來(lái),由于我們數(shù)據(jù)時(shí)間精度為1天,所以恰好是對(duì)應(yīng)的x天移動(dòng)均線(xiàn)。

        如果索引是分鐘級(jí)數(shù)據(jù),那么設(shè)置 mav 得到的就是x分鐘均線(xiàn)!

        添加成交量

        通過(guò)設(shè)置 volume 參數(shù),可以進(jìn)一步添加成交量

        mpf.plot(df_new,?type='line',mav=(5,10,30),?volume=True)

        制作蠟燭圖

        通過(guò)設(shè)置 type 參數(shù)可以繪制更專(zhuān)業(yè)的蠟燭圖,由于上面的數(shù)據(jù)時(shí)間維度過(guò)長(zhǎng),繪制蠟燭圖會(huì)導(dǎo)致很難看清細(xì)節(jié)。

        所以下面繪制最后 40 個(gè)交易日的蠟燭圖,并添加成交量與 3、6、9 日均線(xiàn)

        mpf.plot(df_new.tail(40),?type='candle',mav=(3,6,9),?volume=True)

        展示非交易時(shí)間

        上面的圖是連續(xù)的,但交易日并不是天天都是,每天也有指定時(shí)間,通過(guò)設(shè)置 show_nontrading 參數(shù),可以按照交易時(shí)間繪制,將非交易時(shí)間添加為空白

        mpf.plot(df_new,type='candle',mav?=?(3),show_nontrading=True,?volume=True)

        至此 mplfinance 的基本使用就介紹完畢,相比來(lái)說(shuō)還是比較容易上手使用的。

        ?pyecharts

        雖然 matplotlib 也可以繪制動(dòng)態(tài)圖,但是由于 matplotlib 的特性,展示起來(lái)并不是很方便。

        如果需要能交互式操作數(shù)據(jù),拖動(dòng)時(shí)間軸等功能,可以嘗試使用 pyecharts,但由于不像 mplfinance 封裝好開(kāi)箱即用,代碼寫(xiě)起來(lái)還是需要相當(dāng)一定時(shí)間的,大家可以自行選擇


        推薦閱讀


        牛逼!Python常用數(shù)據(jù)類(lèi)型的基本操作(長(zhǎng)文系列第①篇)

        牛逼!Python的判斷、循環(huán)和各種表達(dá)式(長(zhǎng)文系列第②篇)

        牛逼!Python函數(shù)和文件操作(長(zhǎng)文系列第③篇)

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


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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            男人舔女人下部高潮全视频 | 国产精品久久久久久爽爽爽 | 国产呦萝稀缺另类资源 | 日日干干天天 | 在线观看免费视频一区 | 丝袜美腿啪啪 | 欧美色婷婷69av | 青青草原大香蕉 | 99热只有 | 亚洲黄色视频在线观看网站 |