土薯工具 Toolshu.com 登錄 用戶注冊

在線 Python 環境中自定義 Matplotlib 字體

原創 作者:bhnw 於 2025-10-07 23:11 編輯 35次瀏覽 收藏 (0)

在線 Python 運行工具(Python 3.12.7)中,除了使用系統預置的 Alibaba PuHuiTi 字體外,用戶還可以上傳並使用自定義字體。本文以教學爲目的,逐步演示如何在瀏覽器環境中完成自定義字體的配置與使用。

一、爲什麼需要自定義字體?

  • 系統默認字體風格不符合需求(如需使用思源黑體、站酷快樂體等)
  • 需要統一品牌視覺(如使用企業專屬字體)
  • 教學中演示字體加載機制

⚠️ 注意:若僅需顯示中文,推薦直接使用 Alibaba PuHuiTi,無需額外操作。


二、操作步驟

步驟 1:準備字體文件

  • 下載 .ttf.otf 格式的字體文件(如 ZCOOLKuaiLe-Regular.ttf
  • 確保字體文件可合法使用(遵守授權協議)

步驟 2:上傳字體到虛擬文件系統

  1. 在工具界面中點擊 “文件列表” -> “上傳文件” 按鈕
  2. 選擇本地字體文件(例如 myfont.ttf
  3. 上傳後,文件將位於當前環境虛擬目錄(路徑如 ./myfont.ttf

步驟 3:在代碼中註冊並啓用字體

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

# 1. 註冊字體文件(路徑需與上傳位置一致)
font_path = './myfont.ttf'  # 替換爲實際文件名
fm.fontManager.addfont(font_path)

# 2. 獲取字體名稱(可選:用於驗證)
font_prop = fm.FontProperties(fname=font_path)
font_name = font_prop.get_name()
print("已加載字體名稱:", font_name)

# 3. 設置爲默認 sans-serif 字體
plt.rcParams['font.sans-serif'] = [font_name]
plt.rcParams['axes.unicode_minus'] = False  # 正常顯示負號

# 4. 繪圖測試
plt.figure(figsize=(6, 3))
plt.text(0.5, 0.5, "自定義字體示例", fontsize=20, ha='center')
plt.axis('off')
plt.show()

# 5. 保存圖像
plt.savefig('custom_font_demo.png')
plt.close()

三、常見問題與調試

Q1:如何確認字體是否加載成功?

運行以下代碼列出所有已加載字體中包含關鍵詞的部分:

import matplotlib.font_manager as fm

# 查看所有字體名稱
names = {f.name for f in fm.fontManager.ttflist}
print(sorted(names))

# 或搜索特定名稱
target = "KuaiLe"  # 替換爲你期望的字體關鍵詞
matches = [n for n in names if target.lower() in n.lower()]
print("匹配結果:", matches)

Q2:圖像仍顯示方框或亂碼?

  • 檢查 font_path 是否正確(區分大小寫,路徑需完整)
  • 確認字體文件是 TrueType (.ttf)OpenType (.otf) 格式
  • 確保 plt.rcParams['font.sans-serif'] 使用的是字體的 family name(非文件名)

Q3:能否同時使用多個自定義字體?

可以。重複調用 fm.fontManager.addfont() 註冊多個字體,繪圖時通過 FontProperties 指定:

from matplotlib import font_manager

prop1 = font_manager.FontProperties(fname='./font1.ttf')
prop2 = font_manager.FontProperties(fname='./font2.ttf')

plt.text(0.2, 0.5, "字體1", fontproperties=prop1)
plt.text(0.6, 0.5, "字體2", fontproperties=prop2)

四、示例:使用“站酷快樂體”顯示中文

假設已上傳 ZCOOLKuaiLe-Regular.ttf

下載鏈接:https://pan.baidu.com/s/15FMvEHiL_9T3JV71tw3e8Q?pwd=eb5y

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

# 註冊字體
fm.fontManager.addfont('./ZCOOLKuaiLe-Regular.ttf')

# 設置默認字體
plt.rcParams['font.sans-serif'] = ['ZCOOL KuaiLe']
plt.rcParams['axes.unicode_minus'] = False

# 繪圖
plt.figure(figsize=(5, 2))
plt.title("歡迎使用自定義字體!")
plt.text(0.5, 0.5, "Hello 中文", fontsize=24, ha='center')
plt.axis('off')
plt.show()
plt.savefig('zcool_demo.png')
plt.close()

✅ 成功關鍵:'ZCOOL KuaiLe' 是該字體的 family name,可通過 FontProperties(fname=...).get_name() 獲取。


五、注意事項

  • 會話隔離:關閉頁面後,上傳的字體文件將丟失,需重新上傳。
  • 性能影響:頻繁註冊字體可能影響執行速度,建議在腳本開頭一次性完成。
  • 版權合規:僅使用可免費商用或已獲授權的字體文件。
  • 不要覆蓋系統字體:避免寫 plt.rcParams['font.sans-serif'] = "SimHei",這會破壞預置中文字體支持。

六、總結

在在線 Python 環境中自定義 Matplotlib 字體,只需三步:上傳 → 註冊 → 設置。該流程不僅適用於個性化繪圖,也是理解 Matplotlib 字體機制的有效教學手段。

立即實踐:https://toolshu.com/python3

发现周边 发现周边
評論區

加載中...