admin 發表於 2023-4-8 23:00:07

Matplotlib / Pandas 資料分析繪圖顯示中文字體

font.family: sans-serif

font.sans-serif: <span style="color: rgb(6, 125, 23); background-color: rgb(255, 255, 255); font-family: &quot;JetBrains Mono&quot;, monospace; font-size: 9.8pt;">Noto Sans TC</span>, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

axes.unicode_minus: False # 解决负号'-'显示为方块的问题

font.family         : sans-serif   
# 去掉前面的#   
font.sans-serif   : <span style="color: rgb(6, 125, 23); background-color: rgb(255, 255, 255); font-family: &quot;JetBrains Mono&quot;, monospace; font-size: 9.8pt;">Noto Sans TC</span>, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
# 去掉前面的#,并在冒号后面添加SimHei
axes.unicode_minus: False
# 去掉前面的#,并将True改为False


D:\Users\P34Kv5\PycharmProjects\pythonProject\venv\Lib\site-packages\matplotlib\mpl-data\matplotlibrc

前两项大概在 270 行,第三项大概在 411行。

但是改了配置之后并不会生效,需要重新加载字体,在 Python 中运行如下代码即可:


Matplotlib / Pandas 中文選用: NotoSansTC-Bold.ttf
思源黑體 Noto Sans TC 繁體中文官方下載 (rmb 安裝 至c:/Windows/Fonts/ 檔案名稱為 Noto Sans TC' )noto-cjk/Sans at main · notofonts/noto-cjk (github.com)
step1:將字體放到matplotlib的字體套件資料夾import matplotlib
print(matplotlib.__file__)可以先載入套件,並使用__file__來找出安裝的位置在哪。接著打開剛剛下載的字體壓縮檔(NotoSansTC-Bold.ttf),丟到matplotlib\mpl-data\fonts\ttf即可。
(my case is D:\Users\P34Kv5\PycharmProjects\pythonProject\venv\Lib\site-packages\matplotlib\mpl-data\fonts\ttf\NotoSansTC-Bold.ttf)

step2:到\.matplotlib 刪除所有快取檔案
matplotlib套件會在你第一次import時,將所有的快取設定存取在\.matplotlib資料夾中(通常位置在C:\Users\你電腦的名字\.matplotlib),裡面包含了可以使用字體的fontlist-v330.json檔案,需要將其刪除,並重新import matplotlib,才會重新搜尋到剛剛放進去的字體。
step3:重新import matplotlib,並查看fontlist-v330.json檔案
打開fontlist-v330.json,確認剛剛放進去的字體有沒有被記錄了,接著找出這個字體在JSON裡記錄的名稱。先確認NotoSansTC-Bold.ttf已經被記錄了,再往下搜尋找到”name”: “Noto Sans TC-Bold ”。(這邊是使用Notepad++來直接開啟JSON檔案)
step4:Python 實戰無效
# 修復負號顯示問題
plt.rcParams['axes.unicode_minus'] = Falsestep4:Python 實戰有效plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = 'Noto Sans TC'D:\Users\P34Kv5\PycharmProjects\pythonProject\venv\Lib\site-packages\matplotlib\mpl-data\matplotlibrc 修改(line 271/411)
font.family         : sans-serif   
# 去掉前面的#   
font.sans-serif   : Noto Sans TC, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
# 去掉前面的#,并在冒号后面添加SimHei
axes.unicode_minus: False
# 去掉前面的#,并将True改为False



頁: [1]
查看完整版本: Matplotlib / Pandas 資料分析繪圖顯示中文字體