2025年8月27日 星期三

在樹莓派 P3 A+ 上繪製有中文的 K 線圖

昨天把樹莓派 Pi 3A+ 安裝妥當後, 利用 ChatGPT 協作快速寫了一個 twstock_data.py 套件來模擬 yfinance 的股票資料下載功能 (因為 Pi 3A+ 的 Python 3.7 太舊了, yfinance 雖能安裝卻不能用), 結果非常滿意, 可以直接丟給 kbar 套件在 Windows 上畫 K 線圖, 參考 :


上周將 kbar 發佈到 PyPI 時有在 Colab (CentOS 系) 與 Ubuntu (Debian) 這兩種 Linux 平台測試 kbar 套件, 都能自動安裝與註冊繁體中文字型後成功繪製含有中文的 K 線圖, 今天想說剛好可以拿 P3 A+ 來測試看看 kbar 是否也能順利地在樹莓派的 Raspbian OS (也是 Debian 系) 上繪製有中文的 K 線圖? 關於 kbar 套件參考 : 


由於發布到 PyPI 上的 kbar 套件要求 Python 3.9+, 所以 Pi 3A+ 肯定無法用 pip3 install 來安裝 kbar, 所以我是將 kbar.py 原始碼連同 twstock_data.py 直接傳送到 Pi 3A+ 的使用者目錄下. 開啟 Python3 交談環境, 執行下列程式碼 :

from kbar import KBar   
import twstock_data as td   
df=td.download('0050.TW', start='2025-07-14', end='2025-08-14')   
df.columns=df.columns.map(lambda x: x[0])    # 改成舊版單層索引
kb=KBar(df)    
kb.plot(title='台灣五十(0050.TW)', volume=True) 

結果如下 : 

Python 3.7.3 (/usr/bin/python3)
>>> from kbar import KBar  
Matplotlib is building the font cache; this may take a moment.
>>> import twstock_data as td   
>>> df=td.download('0050.tw', start='2025-07-14', end='2025-08-14')   
>>> df.columns=df.columns.map(lambda x: x[0])    
>>> df.columns   
Index(['Adj Close', 'Close', 'High', 'Low', 'Open', 'Volume'], dtype='object')
>>> kb=KBar(df)     
Linux 環境偵測到,嘗試安裝 Noto CJK 字型...
偵測到 Linux 環境,嘗試安裝 Noto CJK 字型...
Noto CJK 字型安裝完成
>>> kb.plot(title='台灣五十(0050.TW)', volume=True)  
設定字型為: Noto Sans CJK JP
使用指定字型: Noto Sans CJK JP
字型候選清單: ['Noto Sans CJK JP', 'DejaVu Sans', 'Liberation Sans']
libEGL warning: DRI2: failed to authenticate  
qt5ct: using qt5ct plugin    

雖然出現一個 warning, 但仍成功地畫出有中文的 K 線圖 :




我詢問 ChatGPT 為何出現這些訊息, 回覆如下 :
  • libEGL warning 是 GPU 驅動 / OpenGL 的警告,不影響正常畫圖。
  • qt5ct: using qt5ct plugin 是 Qt 的 UI 設定提示,可以忽略。
所以 kbar 套件目前至少在三種 Linux 環境下都能正常工作. 

另外我也參考之前的筆記, 在 Pi 3A+ 下載正黑體的 ttf 來安裝註冊 :


這樣在使用 kbar 或 matplotlib 時也可以指定用正黑體顯示中文.

沒有留言 :