2022年9月17日 星期六

Python 學習筆記 : 用 Matplotlib 繪製 K 線圖

去年以來買了幾本 Python 量化投資的書都因為在忙機器學習而沒時間讀, 最近開始清倉, 讀書進度頗快. 今天在讀下面這本書時看到作者用 Matplotlib 的 bar() 與 vline() 函式來繪製 K 線圖, 覺得手刻 K 線圖很有趣, 就手癢來試試看 :


此書的範例檔案下載網址如下 (須註冊) :

K 線圖範例在第 6-3 節, 因為這本書原為厲害國出版品, 原程式碼中 Matplotlib 使用之中文字體無法顯示 (要另外安裝字體, 麻煩), 故改為微軟正黑體, 並改寫一些變數名稱如下 : 


測試 1 : 用 Matplotlib 畫 K 線圖  [看原始碼]

import matplotlib.pyplot as plt

def kbar(open, close, high, low, pos):
    if close > open:             # 上漲
        color='red'                 # 紅 K 棒
        height=close - open   # 高度=收盤-開盤
        bottom=open             # 底部=開盤
    else:                               # 下跌
        color='green'              # 綠 k 棒
        height=open - close   # 高度=開盤-收盤
        bottom=close             # 底部=收盤
    # 繪製 k 棒實體      
    plt.bar(pos, height=height,bottom=bottom, width=0.2, color=color)
    # 繪製 k 棒上下影線
    plt.vlines(pos, high, low, color)

plt.rcParams["font.family"]=["Microsoft JhengHei"] # 字體=微軟正黑體 
day=['20190422','20190423','20190424','20190425','20190426','20190429','20190430']
kbar(10.2, 10.5, 9.5, 11, 0)       
kbar(10.5, 10, 10.6, 9.8, 1)       
kbar(10, 10.7, 10.9, 9.9, 2)       
kbar(10.7, 10.1, 10.9, 9.9, 3)     
kbar(10.1, 10.2, 10.5, 9.5, 4)     
kbar(10.2, 10.8, 10.8, 10.1, 5)    
kbar(10.8, 11.5, 10.8, 11.1, 6)    

plt.ylim(0, 15)  # 設定 y 軸範圍 
plt.xticks(range(len(day)), day)  # 設定 x 軸的刻度
plt.title('K線圖(2019-04-22 ~ 2019-04-30)')  
plt.show()  

結果如下 : 




哈哈, 原來 Matplotlib 也能畫 K 線圖, 但若資料為 DataFrame, 要呼叫這 kbar() 函式還得做一下資料處理, 把 OHLC 抽出來才行. 


沒有留言:

張貼留言