溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python如何設(shè)置matplotlib正確顯示中文

發(fā)布時間:2021-05-11 09:19:10 來源:億速云 閱讀:211 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹python如何設(shè)置matplotlib正確顯示中文,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Python的優(yōu)點有哪些

1、簡單易用,與C/C++、Java、C# 等傳統(tǒng)語言相比,Python對代碼格式的要求沒有那么嚴格;2、Python屬于開源的,所有人都可以看到源代碼,并且可以被移植在許多平臺上使用;3、Python面向?qū)ο?,能夠支持面向過程編程,也支持面向?qū)ο缶幊蹋?、Python是一種解釋性語言,Python寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序;5、Python功能強大,擁有的模塊眾多,基本能夠?qū)崿F(xiàn)所有的常見功能。

一、前言

python如何設(shè)置matplotlib正確顯示中文

matplotlib是 Python 優(yōu)秀的數(shù)據(jù)可視化第三方庫,matplotlib是基于 numpy 的一套 Python 工具包。這個包提供了豐富的數(shù)據(jù)繪圖工具,主要用于繪制一些統(tǒng)計圖形。

python如何設(shè)置matplotlib正確顯示中文

Matplotlib庫由各種可視化類構(gòu)成,內(nèi)部結(jié)構(gòu)復(fù)雜,受 Matlab 啟發(fā) matplotlib.pyplot 是繪制各類可視化圖形的命令子庫,相當(dāng)于快捷方式。

import matplotlib.pyplot as plt

可 matplotlib 并不支持中文顯示。有中文顯示會出現(xiàn)如下問題:

# -*- coding: UTF-8 -*-
"""
@Author  :葉庭云
@公眾號  :修煉Python
@CSDN    :https://yetingyun.blog.csdn.net/
三折線  黑白灰風(fēng)格  標簽label 標記點形狀
"""
import matplotlib.pyplot as plt

# 生成x軸數(shù)據(jù)  列表推導(dǎo)式
x_data = [i for i in range(0, 55, 5)]

# 構(gòu)造y軸數(shù)據(jù)
y_data1 = [0.5, 0.62, 0.72, 0.78, 0.85, 0.7, 0.64, 0.44, 0.29, 0.15, 0.09]
y_data2 = [0.5, 0.67, 0.71, 0.76, 0.79, 0.66, 0.58, 0.44, 0.38, 0.26, 0.18]
y_data3 = [0.5, 0.59, 0.72, 0.74, 0.76, 0.68, 0.58, 0.48, 0.4, 0.36, 0.3]

# 設(shè)置圖形顯示風(fēng)格
plt.style.use('ggplot')

# 設(shè)置figure大小  像素
plt.figure(figsize=(8, 5), dpi=100)

# 繪制三條折線  點的形狀 顏色  標簽:用于圖例顯示
plt.plot(x_data, y_data1, marker='^', color="k", label="設(shè)備1")
plt.plot(x_data, y_data2, marker="o", color="k", label="設(shè)備2")
plt.plot(x_data, y_data3, marker="s", color="k", label="設(shè)備3")

# x y 軸標簽   字體大小
plt.xlabel("時間周期/min", fontsize=13)
plt.ylabel("直接信任度值", fontsize=13)
# 顯示圖例
plt.legend()

# 保存圖片  展示show
plt.savefig("折線圖01.png", dpi=200)
plt.show()

可 matplotlib 并不支持中文顯示。有中文顯示會出現(xiàn)如下問題:

# -*- coding: UTF-8 -*-
"""
@Author  :葉庭云
@公眾號  :修煉Python
@CSDN    :https://yetingyun.blog.csdn.net/
三折線  黑白灰風(fēng)格  標簽label 標記點形狀
"""
import matplotlib.pyplot as plt

# 生成x軸數(shù)據(jù)  列表推導(dǎo)式
x_data = [i for i in range(0, 55, 5)]

# 構(gòu)造y軸數(shù)據(jù)
y_data1 = [0.5, 0.62, 0.72, 0.78, 0.85, 0.7, 0.64, 0.44, 0.29, 0.15, 0.09]
y_data2 = [0.5, 0.67, 0.71, 0.76, 0.79, 0.66, 0.58, 0.44, 0.38, 0.26, 0.18]
y_data3 = [0.5, 0.59, 0.72, 0.74, 0.76, 0.68, 0.58, 0.48, 0.4, 0.36, 0.3]

# 設(shè)置圖形顯示風(fēng)格
plt.style.use('ggplot')

# 設(shè)置figure大小  像素
plt.figure(figsize=(8, 5), dpi=100)

# 繪制三條折線  點的形狀 顏色  標簽:用于圖例顯示
plt.plot(x_data, y_data1, marker='^', color="k", label="設(shè)備1")
plt.plot(x_data, y_data2, marker="o", color="k", label="設(shè)備2")
plt.plot(x_data, y_data3, marker="s", color="k", label="設(shè)備3")

# x y 軸標簽   字體大小
plt.xlabel("時間周期/min", fontsize=13)
plt.ylabel("直接信任度值", fontsize=13)
# 顯示圖例
plt.legend()

# 保存圖片  展示show
plt.savefig("折線圖01.png", dpi=200)
plt.show()

python如何設(shè)置matplotlib正確顯示中文

需要我們手動一下下設(shè)置~~,才能解決中文顯示的問題。

二、解決方法

1. 方式一

from matplotlib.font_manager import FontProperties  # 導(dǎo)入FontProperties

font = FontProperties(fname="SimHei.ttf", size=14)  # 設(shè)置字體

# 哪里需要顯示中文就在哪里設(shè)置
# -*- coding: UTF-8 -*-
"""
@Author  :葉庭云
@公眾號  :修煉Python
@CSDN    :https://yetingyun.blog.csdn.net/
三折線  黑白灰風(fēng)格  標簽label 標記點形狀
"""
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties  # 步驟一
# 生成x軸數(shù)據(jù)  列表推導(dǎo)式
x_data = [i for i in range(0, 55, 5)]

# 構(gòu)造y軸數(shù)據(jù)
y_data1 = [0.5, 0.62, 0.72, 0.78, 0.85, 0.7, 0.64, 0.44, 0.29, 0.15, 0.09]
y_data2 = [0.5, 0.67, 0.71, 0.76, 0.79, 0.66, 0.58, 0.44, 0.38, 0.26, 0.18]
y_data3 = [0.5, 0.59, 0.72, 0.74, 0.76, 0.68, 0.58, 0.48, 0.4, 0.36, 0.3]

# 設(shè)置圖形顯示風(fēng)格
plt.style.use('ggplot')
font = FontProperties(fname="SimHei.ttf", size=14)  # 步驟二
# 設(shè)置figure大小  像素
plt.figure(figsize=(8, 5), dpi=100)

# 繪制三條折線  點的形狀 顏色  標簽:用于圖例顯示
plt.plot(x_data, y_data1, marker='^', color="k", label="設(shè)備1")
plt.plot(x_data, y_data2, marker="o", color="k", label="設(shè)備2")
plt.plot(x_data, y_data3, marker="s", color="k", label="設(shè)備3")

# x y 軸標簽   字體大小
plt.xlabel("時間周期/min", fontsize=13, fontproperties=font)
plt.ylabel("直接信任度值", fontsize=13, fontproperties=font)
# 顯示圖例
plt.legend(prop=font)

# 保存圖片  展示show
plt.savefig("折線圖01.png", dpi=200)
plt.show()

結(jié)果如下:

python如何設(shè)置matplotlib正確顯示中文

2. 方式二

通過 fontdict 字典參數(shù)來設(shè)置

fontdict={"family": "KaiTi", "size": 15, "color": "r"}
# -*- coding: UTF-8 -*-
"""
@Author  :葉庭云
@公眾號  :修煉Python
@CSDN    :https://yetingyun.blog.csdn.net/
三折線  黑白灰風(fēng)格  標簽label 標記點形狀
"""
import matplotlib.pyplot as plt

# 生成x軸數(shù)據(jù)  列表推導(dǎo)式
x_data = [i for i in range(0, 55, 5)]

# 構(gòu)造y軸數(shù)據(jù)
y_data1 = [0.5, 0.62, 0.72, 0.78, 0.85, 0.7, 0.64, 0.44, 0.29, 0.15, 0.09]
y_data2 = [0.5, 0.67, 0.71, 0.76, 0.79, 0.66, 0.58, 0.44, 0.38, 0.26, 0.18]
y_data3 = [0.5, 0.59, 0.72, 0.74, 0.76, 0.68, 0.58, 0.48, 0.4, 0.36, 0.3]

# 設(shè)置圖形顯示風(fēng)格
plt.style.use('ggplot')

# 設(shè)置figure大小  像素
plt.figure(figsize=(8, 5), dpi=100)

# 繪制三條折線  點的形狀 顏色  標簽:用于圖例顯示
plt.plot(x_data, y_data1, marker='^', color="k", label="設(shè)備1")
plt.plot(x_data, y_data2, marker="o", color="k", label="設(shè)備2")
plt.plot(x_data, y_data3, marker="s", color="k", label="設(shè)備3")

# x y 軸標簽   字體大小
plt.xlabel("時間周期/min", fontsize=13, fontdict={"family": "KaiTi", "size": 15, "color": "r"})
plt.ylabel("直接信任度值", fontsize=13, fontdict={"family": "KaiTi", "size": 15, "color": "k"})

# 顯示圖例
plt.legend(prop={'family': 'SimHei', 'size': 16})

# 保存圖片  展示show
plt.savefig("折線圖01.png", dpi=200)
plt.show()

3. 方式三

改變?nèi)值淖煮w

# matplotlib其實是不支持顯示中文的 顯示中文需要一行代碼設(shè)置字體
mpl.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False   # 步驟二(解決坐標軸負數(shù)的負號顯示問題)
# -*- coding: UTF-8 -*-
"""
@Author  :葉庭云
@公眾號  :修煉Python
@CSDN    :https://yetingyun.blog.csdn.net/
三折線  黑白灰風(fēng)格  標簽label 標記點形狀
"""
import matplotlib.pyplot as plt
import matplotlib as mpl

# 生成x軸數(shù)據(jù)  列表推導(dǎo)式
x_data = [i for i in range(0, 55, 5)]

# 構(gòu)造y軸數(shù)據(jù)
y_data1 = [0.5, 0.62, 0.72, 0.78, 0.85, 0.7, 0.64, 0.44, 0.29, 0.15, 0.09]
y_data2 = [0.5, 0.67, 0.71, 0.76, 0.79, 0.66, 0.58, 0.44, 0.38, 0.26, 0.18]
y_data3 = [0.5, 0.59, 0.72, 0.74, 0.76, 0.68, 0.58, 0.48, 0.4, 0.36, 0.3]

# matplotlib其實是不支持顯示中文的 顯示中文需要一行代碼設(shè)置字體
mpl.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False   # 步驟二(解決坐標軸負數(shù)的負號顯示問題)
# 設(shè)置圖形顯示風(fēng)格
plt.style.use('ggplot')

# 設(shè)置figure大小  像素
plt.figure(figsize=(8, 5), dpi=100)

# 繪制三條折線  點的形狀 顏色  標簽:用于圖例顯示
plt.plot(x_data, y_data1, marker='^', color="k", label="設(shè)備1")
plt.plot(x_data, y_data2, marker="o", color="k", label="設(shè)備2")
plt.plot(x_data, y_data3, marker="s", color="k", label="設(shè)備3")

# x y 軸標簽   字體大小
plt.xlabel("時間周期/min", fontsize=13)
plt.ylabel("直接信任度值", fontsize=13)

# 顯示圖例
plt.legend()

# 保存圖片  展示show
plt.savefig("折線圖01.png", dpi=200)
plt.show()

結(jié)果如下:

python如何設(shè)置matplotlib正確顯示中文

4. 方式四

同樣也是全局改變字體的方法

font = {'family' : 'SimHei',
        'weight' : 'bold',
        'size'   : '16'}
plt.rc('font', **font)               # 步驟一(設(shè)置字體的更多屬性)
plt.rc('axes', unicode_minus=False)  # 步驟二(解決坐標軸負數(shù)的負號顯示問題)
# -*- coding: UTF-8 -*-
"""
@Author  :葉庭云
@公眾號  :修煉Python
@CSDN    :https://yetingyun.blog.csdn.net/
三折線  黑白灰風(fēng)格  標簽label 標記點形狀
"""
import matplotlib.pyplot as plt

# 生成x軸數(shù)據(jù)  列表推導(dǎo)式
x_data = [i for i in range(0, 55, 5)]

# 構(gòu)造y軸數(shù)據(jù)
y_data1 = [0.5, 0.62, 0.72, 0.78, 0.85, 0.7, 0.64, 0.44, 0.29, 0.15, 0.09]
y_data2 = [0.5, 0.67, 0.71, 0.76, 0.79, 0.66, 0.58, 0.44, 0.38, 0.26, 0.18]
y_data3 = [0.5, 0.59, 0.72, 0.74, 0.76, 0.68, 0.58, 0.48, 0.4, 0.36, 0.3]

font = {'family' : 'SimHei',
        'weight' : 'bold',
        'size'   : '16'}
plt.rc('font', **font)               # 步驟一(設(shè)置字體的更多屬性)
plt.rc('axes', unicode_minus=False)  # 步驟二(解決坐標軸負數(shù)的負號顯示問題)

# 設(shè)置圖形顯示風(fēng)格
plt.style.use('ggplot')

# 設(shè)置figure大小  像素
plt.figure(figsize=(8, 5), dpi=100)

# 繪制三條折線  點的形狀 顏色  標簽:用于圖例顯示
plt.plot(x_data, y_data1, marker='^', color="k", label="設(shè)備1")
plt.plot(x_data, y_data2, marker="o", color="k", label="設(shè)備2")
plt.plot(x_data, y_data3, marker="s", color="k", label="設(shè)備3")

# x y 軸標簽   字體大小
plt.xlabel("時間周期/min", fontsize=13)
plt.ylabel("直接信任度值", fontsize=13)

# 顯示圖例
plt.legend()

# 保存圖片  展示show
plt.savefig("折線圖01.png", dpi=200)
plt.show()

結(jié)果如下:

python如何設(shè)置matplotlib正確顯示中文

三、總結(jié)

  • 方式一、方式二是哪里需要中文顯示才設(shè)置,且不會污染全局字體設(shè)置,更靈活。

  • 方式三、方式四不改變?nèi)值淖煮w設(shè)置,一次設(shè)置,多次使用,更方便。

附常用字體如下:

  • 宋體:SimSun

  • 黑體:SimHei

  • 微軟雅黑:Microsoft YaHei

  • 微軟正黑體:Microsoft JhengHei

  • 新宋體:NSimSun

  • 新細明體:PMingLiU

  • 細明體:MingLiU

  • 標楷體:DFKai-SB

  • 仿宋:FangSong

  • 楷體:KaiTi

  • 隸書:LiSu

  • 幼圓:YouYuan

  • 華文細黑:STXihei

  • 華文楷體:STKaiti

  • 華文宋體:STSong

  • 華文中宋:STZhongsong

  • 華文仿宋:STFangsong

  • 方正舒體:FZShuTi

  • 方正姚體:FZYaoti

  • 華文彩云:STCaiyun

  • 華文琥珀:STHupo

  • 華文隸書:STLiti

  • 華文行楷:STXingkai

  • 華文新魏:STXinwei

以上是“python如何設(shè)置matplotlib正確顯示中文”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI