91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Matplotlib中文亂碼怎么解決

發布時間:2022-07-12 14:25:12 來源:億速云 閱讀:153 作者:iii 欄目:開發技術

這篇文章主要介紹了Matplotlib中文亂碼怎么解決的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Matplotlib中文亂碼怎么解決文章都會有所收獲,下面我們一起來看看吧。

Matplotlib中文亂碼

當不對 Matplotlib 進行設置,而直接使用中文時,繪制的圖像會出現中文亂碼。下面是一個含有中文亂碼的折線圖:

Matplotlib中文亂碼怎么解決

從上圖可以看出,本應該顯示在紅框內的中文字體沒有顯示出來(紅框是自己標注出來的),下面給出了兩種解決方案:第一種是臨時解決方案,第二種是一勞永逸的解決方案。

重寫配置文件

通過臨時重寫配置文件的方法,可以解決 Matplotlib 顯示中文亂碼的問題,代碼如下所示:

import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #設置字體
plt.rcParams["axes.unicode_minus"]=False #該語句解決圖像中的“-”負號的亂碼問題

將上述代碼添加到您的繪圖程序中,即可解決中文亂碼的問題。這是一種非常靈活、便捷的解決方法。完整的程序代碼如下:

#繪制折線圖
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #設置字體
plt.rcParams["axes.unicode_minus"]=False #正常顯示負號
year = [2017, 2018, 2019, 2020]
people = [20, 40, 60, 70]
#生成圖表
plt.plot(year, people)
plt.xlabel('年份')
plt.ylabel('人口')
plt.title('人口增長')
#設置縱坐標刻度
plt.yticks([0, 20, 40, 60, 80])
#設置填充選項:參數分別對應橫坐標,縱坐標,縱坐標填充起始值,填充顏色
plt.fill_between(year, people, 20, color = 'green')
#顯示圖表
plt.show()

輸出結果如下:

Matplotlib中文亂碼怎么解決

不過上述解決方案適用于所有操作系統,其唯一弊端是每編寫一個繪圖程序就要添加一次相同的代碼。

修改配置文件

下面介紹第二種方式:通過直接修改配置文件的方法,可以一勞永逸的解決 Matplotlib 的中文亂碼問題。注意此過程在 Windows 環境下進行。

Matplotlib 從配置文件 matplotlibrc 中讀取相關配置信息,比如字體、樣式等,因此我們需要對該配置文件進行更改。首先查看 matplotlibrc 所在的目錄,使用如下代碼確定目錄位置:

import matplotlib
matplotlib.matplotlib_fname()

輸出結果:

D:\python\python37\lib\site-packages\matplotlib\mpl-data\matplotlibrc

然后修改配置文件 matplotlibrc。打開配置文件后,找到以下信息:

#font.family: sans-serif
#font.serif: DejaVu Serif, Bitstream Vera Serif, Computer Modern Roman, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif

將上述配置項前面的#去掉,并修改的配置項,如下所示:

font.family   :  Microsoft YaHei, sans-serif
font.serif: Microsoft YaHei, DejaVu Serif, Bitstream Vera Serif, Computer Modern Roman, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif

注意,由于版本問題,上述內容配置信息可能存在一些差異,請自動忽略。

最后,在以下目錄中復制中文字體微軟雅黑:

C:\Windows\Fonts\Microsoft YaHei UI

復制完成后,將字體粘貼至以下路徑文件中:

D:\python\python37\lib\site-packages\matplotlib\mpl-data\fonts\ttf

字體粘貼后會出現一個 MSYH.ttc 的字體文件,如下所示:

Matplotlib中文亂碼怎么解決

編寫如下代碼進行測試:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-8, 8, 1024)
y1 = 0.618 * np.abs(x) - 0.8 * np.sqrt(64 - x ** 2)
y2 = 0.618 * np.abs(x) + 0.8 * np.sqrt(64 - x ** 2)
plt.plot(x, y1, color='r')
plt.plot(x, y2, color='r')
plt.title("測試",fontsize=20,color="b")
plt.show()

如果你對自己編寫的程序沒有強烈的“潔癖”,可以接受重復的代碼,那么建議您選擇第一種解決方法,因為這種方法靈活、輕便。當然您也可以選擇第二種方式,一勞永逸的解決中文亂碼問題。

關于“Matplotlib中文亂碼怎么解決”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Matplotlib中文亂碼怎么解決”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

瓮安县| 大化| 乐业县| 仙桃市| 玉山县| 嘉鱼县| 通榆县| 靖江市| 连山| 石城县| 伊宁县| 永州市| 印江| 樟树市| 扶绥县| 湘西| 抚顺市| 平舆县| 叙永县| 山阴县| 武川县| 土默特右旗| 龙门县| 兴文县| 东方市| 东明县| 泰宁县| 泽州县| 中西区| 新宁县| 沂南县| 武清区| 石河子市| 鄢陵县| 湾仔区| 南宁市| 新闻| 武冈市| 青铜峡市| 讷河市| 靖安县|