欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決Matplotlib中文顯示亂碼的完整教程

 更新時間:2024年12月06日 08:30:44   作者:一點一木  
在使用 Matplotlib 繪制圖表時,很多開發(fā)者都會遇到中文無法正常顯示的問題,默認情況下,Matplotlib 并不支持中文字符,需要手動設(shè)置字體,這篇博客將教你如何解決 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ù)的操作

    這篇文章主要介紹了Pytorch模型遷移和遷移學(xué)習(xí),導(dǎo)入部分模型參數(shù)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 使用Python判斷IP地址合法性的方法實例

    使用Python判斷IP地址合法性的方法實例

    這篇文章主要介紹了使用Python判斷IP地址合法性的方法實例,需要的朋友可以參考下
    2014-03-03
  • fastapi與django異步的并發(fā)對比分析

    fastapi與django異步的并發(fā)對比分析

    這篇文章主要介紹了fastapi與django異步的并發(fā)對比分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 對Python3中列表乘以某一個數(shù)的示例詳解

    對Python3中列表乘以某一個數(shù)的示例詳解

    今天小編就為大家分享一篇對Python3中列表乘以某一個數(shù)的示例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python實現(xiàn)簡單http服務(wù)器功能

    python實現(xiàn)簡單http服務(wù)器功能

    這篇文章主要為大家詳細介紹了python實現(xiàn)簡單http服務(wù)器功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Python 異步之生成器示例詳解

    Python 異步之生成器示例詳解

    這篇文章主要為大家介紹了Python 異步之生成器示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 關(guān)于Java中RabbitMQ的高級特性

    關(guān)于Java中RabbitMQ的高級特性

    這篇文章主要介紹了關(guān)于Java中RabbitMQ的高級特性,MQ全稱為Message Queue,即消息隊列,"消息隊列"是在消息的傳輸過程中保存消息的容器,它是典型的:生產(chǎn)者、消費者模型,生產(chǎn)者不斷向消息隊列中生產(chǎn)消息,消費者不斷的從隊列中獲取消息,需要的朋友可以參考下
    2023-07-07
  • python簡單實現(xiàn)插入排序?qū)嵗a

    python簡單實現(xiàn)插入排序?qū)嵗a

    在本篇文章里小編給大家整理了一篇關(guān)于python簡單實現(xiàn)插入排序?qū)嵗a,有需要的朋友們可以學(xué)習(xí)參考下。
    2020-12-12
  • Python計算序列相似度的算法實例

    Python計算序列相似度的算法實例

    這篇文章主要介紹了Python計算序列相似度的算法實例,求兩個序列轉(zhuǎn)換的最少交換步驟和最小交換距離,本文提供了部分實現(xiàn)代碼與解決思路,對開發(fā)非常有幫助,需要的朋友可以參考下
    2023-07-07
  • Python記錄詳細調(diào)用堆棧日志的方法

    Python記錄詳細調(diào)用堆棧日志的方法

    這篇文章主要介紹了Python記錄詳細調(diào)用堆棧日志的方法,涉及Python調(diào)用堆棧日志的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05

最新評論