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

Python常見庫matplotlib學習筆記之畫圖文字的中文顯示

 更新時間:2023年05月08日 09:47:08   作者:PellyKoo  
在Python中使用matplotlib或者plotnine模塊繪圖時,常常出現(xiàn)圖表中無法正常顯示中文的問題,下面這篇文章主要給大家介紹了關于Python常見庫matplotlib學習筆記之畫圖文字的中文顯示的相關資料,需要的朋友可以參考下

系列文章目錄

前言

在數據可視化時,常常需要使用圖例來解釋圖中不同元素的含義。在論文寫作時尤其是畢業(yè)論文寫作時,需要圖中文字都顯示中文,數字都用新羅馬體。然而,matplotlib庫默認是不支持中文顯示的,因此在繪制圖例時,需要進行一些設置才能顯示中文。本篇文章將介紹如何使用matplotlib庫繪制中文圖例。

一、matplotlib是什么?

Matplotlib是一個用于創(chuàng)建可視化圖表的Python庫,它支持多種圖表類型,包括線圖、散點圖、條形圖、餅圖、3D圖等,是數據分析、科學計算和工程應用中最常用的可視化工具之一。Matplotlib庫廣泛用于Python的數據分析、機器學習、科學計算等領域,以及研究、教育和工業(yè)生產中。它是一個開源軟件,可以在Python的多個版本中使用。
matplotlib庫的安裝很簡單

pip install matplotlib

本文使用的matplotlib版本為3.6.2??梢暂斎胂旅娴拿钪苯影惭b該版本。

pip install matplotlib==3.6.2

二、使用方法

以下面一段簡單代碼為示例,來講述如何改變繪圖中的文字。

import numpy as np
import matplotlib.pyplot as plt
# 繪制曲線
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label=u'正弦曲線')
plt.plot(x, y2, label=u'余弦曲線')
plt.xlabel('橫軸')
plt.ylabel('縱軸')
plt.title('函數')
# 添加圖例
plt.legend(loc='upper right')
# 顯示圖像
plt.show()

上面這段代碼實現(xiàn)了繪制正弦和余弦曲線在同一幅圖上,其顯示結果是下圖這樣的

可見如果不添加字體設置,橫縱坐標及圖例的中文都是方框。

1.尋找所需要的字體

(1)下載字體

linux一般是不會自帶微軟雅黑、宋體、新羅馬這樣的字體的。我們需要去找。如果你身邊有windows系統(tǒng)的電腦,可以去下面幾個路徑下去拷貝

字體名稱路徑
微軟雅黑C:\Windows\Fonts\msyh.ttc
宋體C:\Windows\Fonts\simsun.ttc
新羅馬C:\Windows\Fonts\TIMES.TTF

懶得話也可以下載我上傳的字體包

字體文件

提取碼: ehtw

(2)放置到合適路徑

linux mint下的字體文件一般放在“/usr/share/fonts/truetype”,如果該目錄不存在,則可以手動創(chuàng)建。一般字體文件都會在truetype文件夾下還有一層文件夾,才到字體文件。

以dejavu為例,就是這樣的。

所以我們也可以創(chuàng)建一個yahei的文件夾放置其字體文件

# 創(chuàng)建yahei文件夾
sudo mkdir /usr/share/fonts/truetype/yahei
# 拷貝字體文件到該文件夾下
sudo cp msyh.ttc /usr/share/fonts/truetype/yahei/

(3)刷新字體緩存

sudo fc-cache -f -v

(4)確認字體文件是否已經安裝

在終端輸入下面的代碼,可以看到微軟雅黑的安裝路徑

fc-list | grep -i yahei

同理,可以查看新羅馬的

fc-list | grep TIMES

查看宋體的

fc-list | grep SUN

(5)刪除matplotlib的緩存

這一步非常重要,有很多人都會忘記

rm rf ~/.cache/matplotlib

2.設置字體

(1)全局設置字體

將下面代碼加在之前的代碼前面即可。

# 設置字體
plt.rcParams['font.family'] = 'Microsoft YaHei'

最終代碼如下:

import numpy as np
import matplotlib.pyplot as plt

# 設置字體
plt.rcParams['font.family'] = 'Microsoft YaHei'
# plt.rcParams['font.family'] = 'SimSun'
# plt.rcParams['font.family'] = 'Times New Roman'

# 繪制曲線
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label=u'正弦曲線')
plt.plot(x, y2, label=u'余弦曲線')
plt.xlabel('橫軸')
plt.ylabel('縱軸')
plt.title('函數')

# 添加圖例
plt.legend(loc='upper right')

# 顯示圖像
plt.show()

運行代碼,看到繪圖出現(xiàn)中文了。

plt.rcParams['font.family'] = 'Microsoft YaHei'這行注釋,替換成plt.rcParams['font.family'] = 'SimSun'便會顯示宋體。

如果開啟plt.rcParams['font.family'] = 'Times New Roman'。我們發(fā)現(xiàn)又出現(xiàn)框框了,顯然新羅馬不支持中文顯示,只有數字變成新羅馬體了。

對不同位置的目標,設置不同的字體,可以如下代碼修改

import numpy as np
import matplotlib.pyplot as plt
# 設置字體
plt.rcParams['font.family'] = 'SimSun'
plt.rcParams['font.family'] = 'Times New Roman'
# 繪制曲線
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label=u'正弦曲線')
plt.plot(x, y2, label=u'余弦曲線')
# 設置橫軸字體
plt.xlabel('橫軸', fontfamily='SimSun')
# 設置縱軸字體
plt.ylabel('縱軸', fontfamily='SimSun')
# 設置標題字體
plt.title('函數', fontfamily='SimSun')
# 設置刻度字體
plt.xticks(fontfamily='Times New Roman')
plt.yticks(fontfamily='Times New Roman')
# 設置圖例字體
plt.legend(loc='upper right', fontsize=12, edgecolor='black', fancybox=False, framealpha=1, prop={'family': 'SimSun'})
# 顯示圖像
plt.show()

最終顯示結果

(2)局部設置字體(強烈推薦)

以上的設置到一臺新機器上就得重新拷貝或者下載字體文件,似乎有點麻煩?,F(xiàn)在介紹第二種方法,直接把自己放在運行程序或者腳本的同級目錄下。這樣字體跟著代碼走,到一個新環(huán)境下只要安裝了matplotlib就可以直接運行。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
# 指定字體
font_path = 'SIMSUN.TTC'  # 這里也可以填其他字體的絕對路徑,只填名稱表示本程序與該字體在同一級目錄下 
font_prop = fm.FontProperties(fname=font_path, size=12)
en_font_path = 'TIMES.TTF'  # 這里也可以填其他字體的絕對路徑,只填名稱表示本程序與該字體在同一級目錄下 
en_font_prop = fm.FontProperties(fname=en_font_path, size=12)
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label=u'正弦曲線')
plt.plot(x, y2, label=u'余弦曲線')
plt.xlabel('橫軸', fontproperties=font_prop)
plt.ylabel('縱軸', fontproperties=font_prop)
plt.title('函數', fontproperties=font_prop)
plt.xticks(fontproperties=en_font_prop)
plt.yticks(fontproperties=en_font_prop)
plt.legend(loc='upper right', fontsize=12, edgecolor='black', fancybox=False, framealpha=1, prop=font_prop)
plt.show()

查看顯示結果

總結

本文簡單介紹了如何使用matplotlib庫添加中文字體顯示的辦法。一種為全局設置的,一種為當前程序設置的。

到此這篇關于Python常見庫matplotlib學習筆記之畫圖文字的中文顯示的文章就介紹到這了,更多相關matplotlib畫圖文字中文顯示內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python中endswith()函數的基本使用

    Python中endswith()函數的基本使用

    這篇文章主要介紹了Python中endswith()函數的基本使用,是Python學習當中的基礎知識,該函數可以用來檢測文件類型,需要的朋友可以參考下
    2015-04-04
  • django 通過URL訪問上傳的文件方法

    django 通過URL訪問上傳的文件方法

    今天小編就為大家分享一篇django 通過URL訪問上傳的文件方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 關于python3.9安裝wordcloud出錯的問題及解決辦法

    關于python3.9安裝wordcloud出錯的問題及解決辦法

    這篇文章主要介紹了關于python3.9安裝wordcloud出錯的問題及解決辦法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • python 基于UDP協(xié)議套接字通信的實現(xiàn)

    python 基于UDP協(xié)議套接字通信的實現(xiàn)

    這篇文章主要介紹了python 基于UDP協(xié)議套接字通信的實現(xiàn),幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • python查找指定具有相同內容文件的方法

    python查找指定具有相同內容文件的方法

    這篇文章主要介紹了python查找指定具有相同內容文件的方法,涉及Python針對文件操作的相關技巧,需要的朋友可以參考下
    2015-06-06
  • 利用Python繪制Jazz網絡圖的例子

    利用Python繪制Jazz網絡圖的例子

    今天小編就為大家分享一篇利用Python繪制Jazz網絡圖的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python爬蟲之爬取某文庫文檔數據

    Python爬蟲之爬取某文庫文檔數據

    這篇文章主要介紹了Python爬蟲之爬取某文庫文檔數據,文中有非常詳細的代碼示例,對正在學python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-04-04
  • keras獲得某一層或者某層權重的輸出實例

    keras獲得某一層或者某層權重的輸出實例

    今天小編就為大家分享一篇keras獲得某一層或者某層權重的輸出實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python參數傳遞及收集機制原理解析

    Python參數傳遞及收集機制原理解析

    這篇文章主要介紹了Python參數傳遞及收集機制原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • 一文掌握Python正則表達式

    一文掌握Python正則表達式

    這篇文章主要介紹了Python正則表達式的相關知識,主要包括re模塊的使用及正則表達式基礎知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06

最新評論