天天看點

【python資料可視化筆記】——matplotlib圖例中文亂碼以及坐标負号顯示matplotlib圖例中文亂碼以及坐标負号顯示

matplotlib圖例中文亂碼以及坐标負号顯示

  在圖檔的标簽名,标題名或者圖例中出現中文時,直接運作會出現亂碼,文字顯示為框框

import matplotlib.pyplot as plt

plt.figure()
plt.title("哈哈")
plt.show()
           
【python資料可視化筆記】——matplotlib圖例中文亂碼以及坐标負号顯示matplotlib圖例中文亂碼以及坐标負号顯示

快速解決辦法

  在導入子產品後加入下面代碼

plt.rcParams['font.sans-serif']=['SimHei']    # 用來正常顯示中文标簽
plt.rcParams['axes.unicode_minus']=False    # 用來正常顯示負号
           
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.figure()
plt.title("哈哈")
plt.show()
           
【python資料可視化筆記】——matplotlib圖例中文亂碼以及坐标負号顯示matplotlib圖例中文亂碼以及坐标負号顯示

永久解決辦法

找到自己想要的中文字型

  1. 在系統中查找已有的字型(好處是不需要安裝):在“C:\Windows\Fonts”中選擇字尾為“.ttf”的中文字型并複制,這一步我選擇了黑體
  2. 在 fontpalace 上下載下傳對應版本的字尾為“.ttf”的字型,複制到“C:\Windows\Fonts”中安裝

把字型複制到matplotlib的字型檔案中

  輸入下面指令找到matplotlib配置檔案

在“c:\program files\python37\lib\site-packages\matplotlib\mpl-data\matplotlibrc”的“font/ttf”檔案夾中粘貼剛剛複制的字型,然後修改配置檔案matplotlibrc,去掉以下三行代碼開頭的#

font.family         : sans-serif

font.sans-serif     : SimHei, DejaVu Sans, Bitstream Vera Sans, ...    # 這裡注意要把字型名稱SimHei放在第一個

axes.unicode_minus  : False    # 修改為False,作用是解決負号的亂碼問題
           

還要注意有的字型名稱并不是字型檔案的名稱,可以檢視字型檔案的屬性(标題)确認一下

重新加載字型

  做完以上操作後執行下面指令

from matplotlib.font_manager import _rebuild

_rebuild()
           

之後重新開機python,很多時候這樣就解決了。

删除matplotlib緩存檔案

  如果仍然不能正常顯示輸入以下代碼

在’C:\Users\sunch\.matplotlib’找到緩存檔案夾并删除該檔案夾,之後重新開機python,如果還是不行可以試試重新開機電腦,我就是重新開機了才可以,果然沒有什麼是一次重新開機解決不了的,如果有那就兩次