linux 下matplotlib 无法显示中文字体的问题
程序员文章站
2022-03-20 18:05:29
...
# 小白的学习之路
仅仅记录一下解决方案,有时间再整理一下解决问题的具体步骤和多种方法
网上的关于matplotlib 中文字体输出问题大部分是基于windows操作系统,而且不能进行复现!!
不能进行复现的教程,不是一个好教程
@author:周末区捉鱼点击打开链接 https://blog.csdn.net/onepiece_dn/article/details/46239581
直接放出解决步骤:
1.先看系统中的中文字体所在的位置
$ fc-list :lang=zh
/usr/share/fonts/truetype/arphic/uming.ttc: AR PL UMing TW MBE:style=Light
/usr/share/fonts/X11/misc/18x18ja.pcf.gz: Fixed:style=ja
/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc: Noto Sans CJK JP,Noto Sans CJK JP Bold:style=Bold,Regular
/usr/share/fonts/truetype/arphic/ukai.ttc: AR PL UKai CN:style=Book
/usr/share/fonts/truetype/arphic/ukai.ttc: AR PL UKai HK:style=Book
/usr/share/fonts/truetype/arphic/ukai.ttc: AR PL UKai TW:style=Book
/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc: Noto Sans Mono CJK KR,Noto Sans Mono CJK KR Bold:style=Bold,Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Black.ttc: Noto Sans CJK TC,Noto Sans CJK TC Black:style=Black,Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Black.ttc: Noto Sans CJK KR,Noto Sans CJK KR Black:style=Black,Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc: Noto Sans Mono CJK JP,Noto Sans Mono CJK JP Bold:style=Bold,Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Medium.ttc: Noto Sans CJK JP,Noto Sans CJK JP Medium:style=Medium,Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc: Noto Sans CJK JP,Noto Sans CJK JP Regular:style=Regular
2.在python用绝对路径来引用字体
import matplotlib.pyplot as plt
import matplotlib as mpl
zhfont= mpl.font_manager.FontProperties(fname='/usr/share/fonts/truetype/arphic/ukai.ttc')
plt.plot([1, 2, 3])
plt.xlabel('x轴标签', fontproperties=zhfont)
plt.ylabel('y轴标签',fontproperties=zhfont)
plt.show()
问题解决
还有一个重叠字体序寻找代码,先放着里,用到的时候再研究
from matplotlib.font_manager import FontManager
import subprocess
mpl_fonts = set(f.name for f in FontManager().ttflist)
print('all font list get from matplotlib.font_manager:')
for f in sorted(mpl_fonts):
print('\t' + f)
output = subprocess.check_output('fc-list :lang=zh -f "%{family}\n"', shell=True, encoding="utf8")
zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n'))
print('\n' + 'Chinese font list get from fc-list:')
for f in sorted(zh_fonts):
print('\t' + f)
print('\n' + 'the fonts we can use:')
available = set(mpl_fonts) & set(zh_fonts)
for f in available:
print('\t' + f)
推荐阅读
-
Broadcom网卡linux系统下无法连接到网络问题的解决办法
-
解决linux环境下时区无法设置的问题
-
解决在Linux操作系统下无法连接MySQL服务端的问题
-
Windows和Linux双系统下删除Linux系统方法和Windows无法启动问题的快速解决方法
-
Python使用matplotlib绘图无法显示中文问题的解决方法
-
Broadcom网卡linux系统下无法连接到网络问题的解决办法
-
termux中matplotlib无法显示中文问题的解决方法
-
解决python matplotlib imshow无法显示的问题
-
PRM-DUL在Linux/Unix VNC下的显示问题
-
解决matplotlib作图中文无法正常显示的问题