解決Matplotlib中文顯示亂碼的完整教程
問題描述
當(dāng)我們在 Matplotlib
中使用中文字符時,通常會遇到如下問題:中文標(biāo)題、標(biāo)簽或數(shù)據(jù)無法正確顯示,而是出現(xiàn)亂碼或方框。以下是一個簡單的示例代碼:
示例代碼
import matplotlib.pyplot as plt ? # 數(shù)據(jù) categories = ['A類', 'B類', 'C類', 'D類'] values = [3, 7, 5, 10] ? # 創(chuàng)建柱狀圖 plt.bar(categories, values) ? # 設(shè)置標(biāo)題和標(biāo)簽 plt.title('柱狀圖', fontsize=16) # 中文標(biāo)題 plt.xlabel('類別', fontsize=12) # 中文X軸標(biāo)簽 plt.ylabel('數(shù)量', fontsize=12) # 中文Y軸標(biāo)簽 ? # 顯示圖表 plt.show()
運行結(jié)果
在沒有正確配置字體的情況下,執(zhí)行上述代碼后,中文字符將無法正常顯示,可能出現(xiàn)亂碼或方框,示例如下:
解決方案
下載并安裝中文字體
Matplotlib
默認使用的字體庫不包括中文字體。為了解決這個問題,我們需要下載一個支持中文的字體,如SimHei
(黑體)。可以使用
wget
下載字體文件:
!wget -O simhei.ttf "https://www.wfonts.com/download/data/2014/06/01/simhei/chinese.simhei.ttf" # 或 !wget -O simhei.ttf "https://github.com/StellarCN/scp_zh/blob/master/fonts/SimHei.ttf"
設(shè)置 Matplotlib
使用中文字體
下載字體后,接下來要讓 Matplotlib
使用該字體。通過 font_manager
來加載新的字體,并通過 rc
設(shè)置默認字體。
import matplotlib ? # 添加下載的字體文件 matplotlib.font_manager.fontManager.addfont('chinese.simhei.ttf') ? # 設(shè)置 Matplotlib 使用 SimHei 字體 matplotlib.rc('font', family='SimHei')
驗證字體是否成功加載
你可以通過以下代碼檢查 Matplotlib
是否成功加載了 SimHei
字體:
import matplotlib.font_manager as fm ? # 打印系統(tǒng)中所有可用的字體 for font in fm.fontManager.ttflist: print(font.name)
在輸出中,如果顯示
SimHei
字體,說明字體安裝成功。設(shè)置中文字體顯示
雖然上述步驟已經(jīng)加載了
SimHei
字體,但為了確保Matplotlib
正常顯示中文標(biāo)簽,還需要設(shè)置rcParams
來指定默認字體為SimHei
,并確保負號可以正常顯示。
# 設(shè)置 Matplotlib 使用 SimHei 字體來顯示中文 plt.rcParams['font.sans-serif'] = ['SimHei'] # 正常顯示中文標(biāo)簽 plt.rcParams['axes.unicode_minus'] = False # 正常顯示負號
完整示例
將上述設(shè)置整合到一起,形成完整的代碼如下:
import matplotlib.pyplot as plt import matplotlib ? # 設(shè)置字體,確保中文顯示正常(非必須添加此代碼) matplotlib.rcParams['font.sans-serif'] = ['SimHei'] matplotlib.rcParams['axes.unicode_minus'] = False ? # 數(shù)據(jù) categories = ['A類', 'B類', 'C類', 'D類'] values = [3, 7, 5, 10] ? # 創(chuàng)建柱狀圖 plt.bar(categories, values) ? # 設(shè)置標(biāo)題和標(biāo)簽 plt.title('柱狀圖', fontsize=16) # 中文標(biāo)題 plt.xlabel('類別', fontsize=12) # 中文X軸標(biāo)簽 plt.ylabel('數(shù)量', fontsize=12) # 中文Y軸標(biāo)簽 ? # 顯示圖表 plt.show()
最終效果
經(jīng)過上述配置后,中文字符應(yīng)該能夠正常顯示在圖表中,效果如下所示:
擴展:Matplotlib 配置與調(diào)試
查看 Matplotlib
字體緩存目錄
如果你遇到字體加載問題,可以查看 Matplotlib
的緩存目錄,確保字體已經(jīng)成功安裝并被 Matplotlib
識別。
import matplotlib as mpl print(mpl.get_cachedir())
這將返回緩存目錄的路徑,幫助你調(diào)試字體加載問題。
其他字體支持
除了 SimHei
(黑體)之外,Matplotlib
還支持多種其他中文字體,如 Microsoft YaHei(微軟雅黑),F(xiàn)angSong(仿宋),以及系統(tǒng)自帶的其他字體。你可以選擇合適的字體來調(diào)整圖表樣式。
總結(jié)
通過上述步驟,我們可以解決 Matplotlib
中中文顯示問題。確保字體安裝和配置正確,不僅可以提升圖表的美觀性,還能增強圖表的可讀性。希望這篇文章能夠幫助你更好地在 Python
中使用 Matplotlib
繪制中文圖表。
以上就是解決Matplotlib中文顯示亂碼的完整教程的詳細內(nèi)容,更多關(guān)于Matplotlib中文亂碼的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Pytorch模型遷移和遷移學(xué)習(xí),導(dǎo)入部分模型參數(shù)的操作
這篇文章主要介紹了Pytorch模型遷移和遷移學(xué)習(xí),導(dǎo)入部分模型參數(shù)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03