最近再弄新的服务器,结果上面画图的时候没有中文。
用下面这段代码看一下是不是支持呢?
from matplotlib.font_manager import FontManager
import subprocess
fm = FontManager()
mat_fonts = set(f.name for f in fm.ttflist)
print (mat_fonts)
output = subprocess.check_output(
'fc-list :lang=zh -f "%{family}\n"', shell=True)
print ('*' * 10, '系统可用的中文字体', '*' * 10)
print (output)
zh_fonts = set(f.split(',', 1)[0] for f in str(output, encoding = "utf-8").split('\n'))
print(zh_fonts)
available = mat_fonts & zh_fonts
print ('*' * 10, '可用的字体', '*' * 10)
for f in available:
print (f)
如果支持的话,直接
plt.rcParams['font.family'] = '支持的字体名字'
没有的话,看下系统支持的字体,需要在matplotlibrc这个文件下改点东西。
找路径
import matplotlib
matplotlib.matplotlib_fname()
vim进去,注释一下,font.family
和 font.serif
就可以了,还要记得在font.serif
,这里添加上中文字体。
出来重新启动下jupyterlab,或者清一下缓存
import shutil
import matplotlib
shutil.rmtree(matplotlib.get_cachedir())
或者这样
~/.cache/matplotlib
如果系统本身就没有字体,这时需要我们自己上传一份ttf字体,还得把这个文件复制在/home/hk_code/miniconda3/envs/aa_jpt/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf
这个文件下,重复上面的工作就ok啦。