Python畫K線圖 [附程式碼]

今天來跟大家分享,如何用Python畫K線圖。

網路上已經有幾篇類似的文章,不過我還是想自己寫一篇,走極簡風的教學。

首先,如果你還沒裝mpl_finance套件,請先用pip安裝(與ffn安裝方法相同)

直接上程式碼:
# 載入需要用到的函式庫
import ffn # 金融函式庫
import IPython # 互動模組
import matplotlib.pyplot as plt # 繪圖函式庫
import mpl_finance as mpf # 金融繪圖模組

# 取得歷史資料
stock = ffn.get('2330.TW:Open, 2330.TW:High, 2330.TW:Low, 2330.TW:Close, 2330.TW:Volume', column_names=['open', 'high', 'low', 'close', 'volume'], start='2019-1-1', end='2019-10-8') # 下載台積電股價資料

# 設定圖片輸出位置
IPython.get_ipython().enable_matplotlib(gui='qt') # 圖片輸出於新視窗

# 繪圖
plt.figure() # 開啟新圖

space = 10 # X軸(日期)座標間距

ax1 = plt.subplot2grid((3, 1), (0, 0), rowspan=2, colspan=1) # 佔全圖2/3的子圖一
ax1.set_xticks(range(0, len(stock.index), space)) # 設定X軸座標
ax1.set_xticklabels(stock.index[::space].strftime('%Y-%m-%d')) # 設定X軸標籤
mpf.candlestick2_ohlc(ax1, stock['open'], stock['high'], stock['low'], stock['close'], width=0.6, colorup='r', colordown='k', alpha=1) # 畫出K線圖
ax1.tick_params('x', bottom=False, labelbottom=False) # 子圖一不顯示X軸標籤
ax1.set_axisbelow(True) # 設定格線在最底圖層
ax1.grid(True) # 畫格線

ax2 = plt.subplot2grid((3, 1), (2, 0), rowspan=1, colspan=1, sharex=ax1) # 佔全圖1/3的子圖二,設定X軸座標與子圖一相同
mpf.volume_overlay(ax2, stock['open'], stock['close'], stock['volume']/1000, colorup='b', colordown='b', width=0.6, alpha=1) # 畫出成交量
ax2.set_axisbelow(True) # 設定格線在最底圖層
ax2.grid(True) # 畫格線

plt.gcf().autofmt_xdate() # 斜放X軸標籤
plt.show() # 顯示圖片

如果你是使用Anaconda預設的Spyder編輯器,應該會跳出一個新視窗,長得像這樣:


利用左上角的工具列,就成為一套陽春版的看盤軟體了。


參考資料:[Day25]繪製K線圖