matplotlib 繪圖 中文亂碼及無法顯示|Python|Kiwi Half 半熟奇異果
3 min readFeb 10, 2023
說明
Matplotlib 在沒有支援中文字型的情況下,繪圖時會出現中文亂碼、方格或無法顯示部分符號的問題,我們可以到 matplotlib 資料夾中手動安裝自己想要 (非內建) 的中文字體,或是以內建的微軟正黑體 Microsoft JhengHei 進行應用,解決中文問題 。
以下由 matplotlib 繪圖的初始參數設定 rcParams 設定微軟正黑體 Microsoft JhengHei 作為解決中文無法顯示的字體,同時解除負號無法顯示的狀況。
Code
Step1. 安裝套件
import matplotlib.pyplot as plt
import numpy as np
Step2. 解決繪圖的中文亂碼
# 中文亂碼問題
def plt_chinese():
plt.rcParams['font.sans-serif'] = ['Microsoft JhengHei'] # 修改中文字體
plt.rcParams['axes.unicode_minus'] = False # 顯示負號
Step3. 建立隨機資料 + 繪圖 + 檢視內建字體
# 建立資料
def data():
x = np.random.randint(1, 50, 10) # 10 random data from 1 to 50
y = np.random.randint(-20, 0, 10) # 10 random data from 1 to 50
# y = np.random.randn(10) # standard normal distribution random data
return x, y
# 繪圖
def plt_plot(x, y, title = '繪圖'):
plt_chinese
# plt.xkcd()
plt.plot(
x, y, # data
'r', # color
alpha = 0.5 # 透明度
)
# 圖說明
plt.title(title)
plt.xlabel('x')
plt.ylabel('y')
plt.show()
# 檢視內鍵字體
def font_list():
for f in font_manager.fontManager.ttflist:
print(f.name)
Step4. 執行
x,y = data()
plt_plot(x, y)