文章目錄
- 安裝中文字體
- 在Matplotlib中使用該字體來顯示中文
在 Linux 系統中使用 Matplotlib 繪制圖表時,如果需要顯示中文,可能會遇到中文字符顯示為方塊或者亂碼的問題。這是因為Matplotlib 默認使用的字體不支持中文。本文手把手帶你解決這個問題。
安裝中文字體
要在Linux系統中安裝simhei.ttf
(黑體字體文件),你可以按照以下步驟操作:
-
下載字體文件:首先,你需要獲取
simhei.ttf
文件。如果手頭沒有這個文件,可以從一個可信的來源下載。 -
創建字體目錄(如果你還沒有合適的目錄):
如果你希望為當前用戶安裝字體,可以在主目錄下創建一個.fonts
目錄(如果它還不存在的話)。對于系統級別的安裝,則需要將字體文件放置在系統的字體目錄中,比如/usr/share/fonts/
。-
對于個人使用:
mkdir -p ~/.fonts
-
對于系統范圍內使用(可能需要管理員權限):
sudo mkdir -p /usr/share/fonts/truetype/simhei
-
-
復制字體文件:
-
對于個人使用,將
simhei.ttf
文件復制到~/.fonts/
目錄下:cp path/to/simhei.ttf ~/.fonts/
-
對于系統范圍使用,將
simhei.ttf
文件復制到創建的系統字體目錄中(例如/usr/share/fonts/truetype/simhei/
),這可能需要管理員權限:sudo cp path/to/simhei.ttf /usr/share/fonts/truetype/simhei/
請確保替換
path/to/simhei.ttf
為你實際的simhei.ttf
文件路徑。
-
-
更新字體緩存:
安裝完字體后,需要更新系統的字體緩存以使新字體生效。-
對于個人使用的字體:
fc-cache -f -v ~/.fonts/
-
對于系統范圍的字體安裝:
sudo fc-cache -f -v
-
-
驗證安裝:
你可以通過列出所有已安裝的中文支持字體來檢查simhei
是否已經成功安裝并被識別:fc-list :lang=zh
在輸出列表中尋找包含“SimHei”或“黑體”的行,確認字體已正確安裝。
完成這些步驟之后,你的系統就安裝了simhei.ttf
字體,并且可以在應用程序如Matplotlib中使用該字體顯示中文。記得在Matplotlib中設置正確的字體名稱(如SimHei
)以便利用這個新安裝的字體。
在Matplotlib中使用該字體來顯示中文
安裝完simhei.ttf
字體并確保系統已更新字體緩存后,你可以在Matplotlib中使用該字體來顯示中文。以下是具體的步驟和示例代碼:
-
確認字體名稱:在Linux系統中安裝新字體之后,建議先確認一下字體的確切名稱。可以通過以下命令查看:
fc-list :lang=zh -f "%{family}\n"
在輸出中找到類似“SimHei”或“黑體”的條目。注意字體名稱的準確拼寫(包括大小寫)。
-
修改Matplotlib配置以使用新字體:你可以通過幾種方式來指定Matplotlib使用
SimHei
字體顯示中文。-
臨時設置:在腳本中直接設置字體屬性,這適用于僅想在特定圖表中使用中文的情況。
import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties# 如果你知道字體的確切名稱,可以直接在這里設置 font = FontProperties(fname="/usr/share/fonts/truetype/simhei/simhei.ttf") # 根據實際路徑調整plt.title('這是一個測試標題', fontproperties=font) # 標題使用中文 plt.xlabel('X軸標簽', fontproperties=font) # X軸標簽使用中文 plt.ylabel('Y軸標簽', fontproperties=font) # Y軸標簽使用中文 plt.rcParams['axes.unicode_minus'] = False # 正常顯示負號plt.plot([0, 1, 2], [0, 1, 4]) plt.show()
-
全局設置:如果你想對所有的圖表都應用相同的字體設置,可以修改matplotlib的配置文件(
matplotlibrc
)或者直接在代碼中設置默認字體屬性。import matplotlib.pyplot as pltplt.rcParams['font.family'] = 'SimHei' # 假設"SimHei"是你的字體名稱,請根據實際情況替換 plt.rcParams['axes.unicode_minus'] = False # 解決負號顯示問題plt.title('這是一個測試標題') # 現在應該能正常顯示中文了 plt.xlabel('X軸標簽') plt.ylabel('Y軸標簽')plt.plot([0, 1, 2], [0, 1, 4]) plt.show()
-
請確保根據你之前確認的字體名稱調整上述代碼中的font.family
或FontProperties
參數。如果你按照前面提到的方法正確安裝了字體,并且提供了正確的字體路徑或名稱,那么現在你應該能夠在Matplotlib圖表中正常顯示中文文本了。