設為首頁收藏本站

艾歐踢論壇

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

搜索
熱搜: 活動 交友 discuz
查看: 256|回復: 0
打印 上一主題 下一主題

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

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2023-4-8 23:00:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. font.family: sans-serif

  2. 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

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

複製代碼
  1. font.family         : sans-serif   
  2. # 去掉前面的#     
  3. 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  
  4. # 去掉前面的#,并在冒号后面添加SimHei
  5. axes.unicode_minus  : False
  6. # 去掉前面的#,并将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的字體套件資料夾
  1. import matplotlib
  2. 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 實戰  無效
  1. # 修復負號顯示問題
  2. plt.rcParams['axes.unicode_minus'] = False
複製代碼
step4:Python 實戰  有效
  1. plt.rcParams['font.family'] = 'sans-serif'
  2. plt.rcParams['font.sans-serif'] = 'Noto Sans TC'
複製代碼
D:\Users\P34Kv5\PycharmProjects\pythonProject\venv\Lib\site-packages\matplotlib\mpl-data\matplotlibrc 修改(line 271/411)
  1. font.family         : sans-serif   
  2. # 去掉前面的#     
  3. font.sans-serif     : Noto Sans TC, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif  
  4. # 去掉前面的#,并在冒号后面添加SimHei
  5. axes.unicode_minus  : False
  6. # 去掉前面的#,并将True改为False
複製代碼




本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?立即註冊

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 轉播轉播 分享分享 分享淘帖
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|Archiver|手機版|艾歐踢創新工坊    

GMT+8, 2024-5-16 15:55 , Processed in 0.205858 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表