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

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

 更新時(shí)間:2024年12月06日 08:30:44   作者:一點(diǎn)一木  
在使用 Matplotlib 繪制圖表時(shí),很多開發(fā)者都會(huì)遇到中文無(wú)法正常顯示的問(wèn)題,默認(rèn)情況下,Matplotlib 并不支持中文字符,需要手動(dòng)設(shè)置字體,這篇博客將教你如何解決 Matplotlib 繪圖顯示中文的常見問(wèn)題,確保中文字符能夠在圖表中正確顯示,需要的朋友可以參考下

問(wèn)題描述

當(dāng)我們?cè)?nbsp;Matplotlib 中使用中文字符時(shí),通常會(huì)遇到如下問(wèn)題:中文標(biāo)題、標(biāo)簽或數(shù)據(jù)無(wú)法正確顯示,而是出現(xiàn)亂碼或方框。以下是一個(gè)簡(jiǎ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()

運(yùn)行結(jié)果

在沒(méi)有正確配置字體的情況下,執(zhí)行上述代碼后,中文字符將無(wú)法正常顯示,可能出現(xiàn)亂碼或方框,示例如下:

解決方案

  • 下載并安裝中文字體

    Matplotlib 默認(rèn)使用的字體庫(kù)不包括中文字體。為了解決這個(gè)問(wèn)題,我們需要下載一個(gè)支持中文的字體,如 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 使用中文字體

下載字體后,接下來(lái)要讓 Matplotlib 使用該字體。通過(guò) font_manager 來(lái)加載新的字體,并通過(guò) rc 設(shè)置默認(rèn)字體。

import matplotlib
?
# 添加下載的字體文件
matplotlib.font_manager.fontManager.addfont('chinese.simhei.ttf')
?
# 設(shè)置 Matplotlib 使用 SimHei 字體
matplotlib.rc('font', family='SimHei')

驗(yàn)證字體是否成功加載

你可以通過(guò)以下代碼檢查 Matplotlib 是否成功加載了 SimHei 字體:

import matplotlib.font_manager as fm
?
# 打印系統(tǒng)中所有可用的字體
for font in fm.fontManager.ttflist:
    print(font.name)
  • 在輸出中,如果顯示 SimHei 字體,說(shuō)明字體安裝成功。

  • 設(shè)置中文字體顯示

    雖然上述步驟已經(jīng)加載了 SimHei 字體,但為了確保 Matplotlib 正常顯示中文標(biāo)簽,還需要設(shè)置 rcParams 來(lái)指定默認(rèn)字體為 SimHei,并確保負(fù)號(hào)可以正常顯示。

# 設(shè)置 Matplotlib 使用 SimHei 字體來(lái)顯示中文
plt.rcParams['font.sans-serif'] = ['SimHei']  # 正常顯示中文標(biāo)簽
plt.rcParams['axes.unicode_minus'] = False  # 正常顯示負(fù)號(hào)

完整示例

將上述設(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)過(guò)上述配置后,中文字符應(yīng)該能夠正常顯示在圖表中,效果如下所示:

擴(kuò)展:Matplotlib 配置與調(diào)試

查看 Matplotlib 字體緩存目錄

如果你遇到字體加載問(wèn)題,可以查看 Matplotlib 的緩存目錄,確保字體已經(jīng)成功安裝并被 Matplotlib 識(shí)別。

import matplotlib as mpl
print(mpl.get_cachedir())

這將返回緩存目錄的路徑,幫助你調(diào)試字體加載問(wèn)題。

其他字體支持

除了 SimHei(黑體)之外,Matplotlib 還支持多種其他中文字體,如 Microsoft YaHei(微軟雅黑),F(xiàn)angSong(仿宋),以及系統(tǒng)自帶的其他字體。你可以選擇合適的字體來(lái)調(diào)整圖表樣式。

總結(jié)

通過(guò)上述步驟,我們可以解決 Matplotlib 中中文顯示問(wèn)題。確保字體安裝和配置正確,不僅可以提升圖表的美觀性,還能增強(qiáng)圖表的可讀性。希望這篇文章能夠幫助你更好地在 Python 中使用 Matplotlib 繪制中文圖表。

以上就是解決Matplotlib中文顯示亂碼的完整教程的詳細(xì)內(nèi)容,更多關(guān)于Matplotlib中文亂碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Pytorch模型遷移和遷移學(xué)習(xí),導(dǎo)入部分模型參數(shù)的操作

    Pytorch模型遷移和遷移學(xué)習(xí),導(dǎo)入部分模型參數(shù)的操作

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

    使用Python判斷IP地址合法性的方法實(shí)例

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

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

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

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

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

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

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

    Python 異步之生成器示例詳解

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

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

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

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

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

    Python計(jì)算序列相似度的算法實(shí)例

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

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

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

最新評(píng)論