termux中matplotlib無法顯示中文問題的解決方法

問題背景

在開始正文之前,感謝用戶名為憐索的朋友送給瞭我的博客2021年的第一個贊!

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import os
matplotlib.rcParams['xtick.direction'] = 'in'
matplotlib.rcParams['ytick.direction'] = 'in'
plt.rcParams['axes.unicode_minus'] = False # 用來正常顯示負號
#顯示中文
plt.rcParams['font.sans-serif'] = ['simhei']
x = np.linspace(-1,1,50)#從(-1,1)均勻取50個點
y = 2 * x
plt.plot(x,y)

plt.xlabel("吸光值")
plt.ylabel("濃度")
plt.show()

上述代碼在window和linux系統均能夠在橫縱坐標標題正確顯示中文,但在termux中效果如下:

無法顯示中文

解決方案

從window或者當前系統中找到中文字體,或者前往https://github.com/dolbydu/font下載相應字體(該網站目前需要科學上網),本文以字體simhai.ttf(黑體)為例;

將simhai.ttf文件移動到/data/data/com.termux/files/usr/lib/python3.9/site-packages/matplotlib/mpl-data/fonts/ttf目錄下;

修改matplotlibrc文件

#去掉註釋
font.family      : sans-serif
#去掉註釋,並在冒號後的值前添加前文提及的中文字體
font.sans-serif  : STKaiti, Simhei........
#刪除matplotlib緩存
rm -rf ~/.cache/matplotlib

測試

還是上述代碼:

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import os
#設置坐標軸朝向
matplotlib.rcParams['xtick.direction'] = 'in'
matplotlib.rcParams['ytick.direction'] = 'in'
plt.rcParams['axes.unicode_minus'] = False # 用來正常顯示負號
#顯示中文
plt.rcParams['font.sans-serif'] = ['simhei']
x = np.linspace(-1,1,50)#從(-1,1)均勻取50個點
y = 2 * x
plt.plot(x,y)

plt.xlabel("吸光值")
plt.ylabel("濃度")
#由於termux沒有圖像界面,因此不能夠使用plt.show(),因此用plt.savefig()配合termux-open命令替代
plt.savefig("test2.png")
os.system("termux-open test2.png")

效果:

正確顯示中文

附加:matplotlib中文字體目錄

黑體:SimHei
微軟雅黑:Microsoft YaHei
微軟正黑體:Microsoft JhengHei
新宋體:NSimSun
新細明體:PMingLiU
細明體:MingLiU
華文新魏:STXinwei
華文行楷:STXingkai
華文隸書:STLliti
花紋琥珀:STHupo
華文彩雲:STCaiyun
方正姚體:FZYaoti
方正舒體:FZShuTi
標楷體:DFKai-SB
華文仿宋:STFangsong
華文中宋:STZhongsong
華文宋體:STSong
華文楷體:STKaiti
華文細黑:STXihei
幼圓:YouYuan
隸書:LiSu
楷體_GB 2313:Kaiti_GB2313
仿宋_GB2313:FangSong_GB2313
仿宋:FangSong

到此這篇關於termux中matplotlib無法顯示中文問題的解決方法的文章就介紹到這瞭,更多相關termux matplotlib無法顯示中文內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!