matplotlib 中文字体测试
wget https://zihao-openmmlab.obs.cn-east-3.myhuaweicloud.com/20220716-mmclassification/dataset/SimHei.ttf
# /home/software/anaconda3/envs/tf115/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf
findfont: Font family ['SimHei'] not found. Falling back to DejaVu Sans.
/home/software/anaconda3/envs/tf115/lib/python3.7/site-packages/IPython/core/pylabtools.py:151: UserWarning: Glyph 20013 (\N{CJK UNIFIED IDEOGRAPH-4E2D}) missing from current font.
fig.canvas.print_figure(bytes_io, **kw)
/home/software/anaconda3/envs/tf115/lib/python3.7/site-packages/IPython/core/pylabtools.py:151: UserWarning: Glyph 25991 (\N{CJK UNIFIED IDEOGRAPH-6587}) missing from current font.
fig.canvas.print_figure(bytes_io, **kw)
/home/software/anaconda3/envs/tf115/lib/python3.7/site-packages/IPython/core/pylabtools.py:151: UserWarning: Glyph 23383 (\N{CJK UNIFIED IDEOGRAPH-5B57}) missing from current font.
fig.canvas.print_figure(bytes_io, **kw)
/home/software/anaconda3/envs/tf115/lib/python3.7/site-packages/IPython/core/pylabtools.py:151: UserWarning: Glyph 20307 (\N{CJK UNIFIED IDEOGRAPH-4F53}) missing from current font.
fig.canvas.print_figure(bytes_io, **kw)
/home/software/anaconda3/envs/tf115/lib/python3.7/site-packages/IPython/core/pylabtools.py:151: UserWarning: Glyph 27979 (\N{CJK UNIFIED IDEOGRAPH-6D4B}) missing from current font.
fig.canvas.print_figure(bytes_io, **kw)
/home/software/anaconda3/envs/tf115/lib/python3.7/site-packages/IPython/core/pylabtools.py:151: UserWarning: Glyph 35797 (\N{CJK UNIFIED IDEOGRAPH-8BD5}) missing from current font.
fig.canvas.print_figure(bytes_io, **kw)
findfont: Font family ['SimHei'] not found. Falling back to DejaVu Sans.
findfont: Font family ['SimHei'] not found. Falling back to DejaVu Sans.
/home/software/anaconda3/envs/tf115/lib/python3.7/site-packages/IPython/core/pylabtools.py:151: UserWarning: Glyph 36724 (\N{CJK UNIFIED IDEOGRAPH-8F74}) missing from current font.
fig.canvas.print_figure(bytes_io, **kw)
原因:
字体文件放置的位置不对。
解决方法:
(1) 字体文件的位置:
../anaconda3/envs/yolov5/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/
(2)清除缓存
import matplotlib.pyplot as plt
%matplotlib inline
print(matplotlib.get_cachedir())
rm -rf /root/.cache/matplotlib
(3)重启kernel
(4)
import matplotlib.pyplot as plt
%matplotlib inlineimport matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
print(matplotlib.get_cachedir())
matplotlib.rc("font",family='SimHei') # 中文字体
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号plt.plot([1,2,3], [100,500,300])
plt.title('matplotlib中文字体测试', fontsize=25)
plt.xlabel('X轴', fontsize=15)
plt.ylabel('Y轴', fontsize=15)
plt.show()
====================================================
一、方法一
修改局部字体样式,在需要显示中文的地方增加 fontproperties 属性。
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.title('自定义标题名称', fontproperties='SimHei')
plt.show()
二、方法二
修改全局字体样式,需要使用 matplotlib 模块的 rcParams
import matplotlib.pyplot as plt
#####################################
from matplotlib import rcParams
rcParams['font.family'] = 'SimHei'
#####################################
plt.plot([1, 2, 3, 4])
plt.title('自定义标题名称')
plt.show()
三、方法三
在代码中插入以下三行代码
======================================================
from pylab import *
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
可以直接从window系统中找到(C:/windows/Fonts),复制即可
常用中文字体
宋体:SimSun
黑体:SimHei
微软雅黑:Microsoft YaHei
微软正黑体:Microsoft JhengHei
新宋体:NSimSun
新细明体:PMingLiU
细明体:MingLiU
标楷体:DFKai-SB
仿宋:FangSong
楷体:KaiTi
隶书:LiSu
幼圆:YouYuan
华文细黑:STXihei
华文楷体:STKaiti
华文宋体:STSong
华文中宋:STZhongsong
华文仿宋:STFangsong
方正舒体:FZShuTi
方正姚体:FZYaoti
华文彩云:STCaiyun
华文琥珀:STHupo
华文隶书:STLiti
华文行楷:STXingkai
华文新魏:STXinwei
————————————————