为什么matplotlib无法显示图像(matplotlib画图字体缺少问题解决方法)
在服务器调用matplotlib画图的时候经常会遇到下面的提示:,我来为大家科普一下关于为什么matplotlib无法显示图像?以下内容希望对你有帮助!
为什么matplotlib无法显示图像
在服务器调用matplotlib画图的时候经常会遇到下面的提示:
Font family [‘sans-serif‘] not found.Falling back to DejaVu Sans
默认的DejaVu Sans字体画图的显示效果是很差的。
具体解决方法:1. 在所需系统中python环境下,输入以下代码查看字体路径
[tangg@node01 ~]$ python
Python 3.9.12 (main, Jun 1 2022, 11:38:51)
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib
>>> print(matplotlib.matplotlib_fname)
/home/tangg/.local/lib/python3.9/site-packages/matplotlib/mpl-data/matplotlibrc
切换到上面查询到的路径
[tangg@node01 fonts]$ cd /home/tangg/.local/lib/python3.9/site-packages/matplotlib/mpl-dat
fonts images matplotlibrc plot_directive sample_data stylelib
继续切换到字体(fonts)目录下
[tangg@node01 fonts]$ cd fonts/ttf/
Arial.ttf DejaVuSans-Bold.ttf DejaVuSerif-Bold.ttf STIXGeneral.ttf STIXSizOneSymReg.ttf
cmb10.ttf DejaVuSansDisplay.ttf DejaVuSerifDisplay.ttf STIXNonUniBolIta.ttf STIXSizThreeSymBol.ttf
cmex10.ttf DejaVuSansMono-BoldOblique.ttf DejaVuSerif-Italic.ttf STIXNonUniBol.ttf STIXSizThreeSymReg.ttf
cmmi10.ttf DejaVuSansMono-Bold.ttf DejaVuSerif.ttf STIXNonUniIta.ttf STIXSizTwoSymBol.ttf
cmr10.ttf DejaVuSansMono-Oblique.ttf LICENSE_DEJAVU STIXNonUni.ttf STIXSizTwoSymReg.ttf
cmss10.ttf DejaVuSansMono.ttf LICENSE_STIX STIXSizFiveSymReg.ttf
cmsy10.ttf DejaVuSans-Oblique.ttf STIXGeneralBolIta.ttf STIXSizFourSymBol.ttf
cmtt10.ttf DejaVuSans.ttf STIXGeneralBol.ttf STIXSizFourSymReg.ttf
DejaVuSans-BoldOblique.ttf DejaVuSerif-BoldItalic.ttf STIXGeneralItalic.ttf STIXSizOneSymBol.ttf
2. 下载所需的字体(下载链接):
https://www.123pan.com/s/IczA-wkRgh 提取码: xhzy
将网盘的字体下载上传到上面获取得到的字体(fonts)目录下即可。
3. 删除matplotlib的缓冲目录(具体操作如下)
[tangg@node01 ~]$ python
Python 3.9.12 (main, Jun 1 2022, 11:38:51)
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib
>>> matplotlib.get_cachedir
'/home/tangg/.cache/matplotlib'
rm -rf /home/tangg/.cache/matplotlib
4. 修改matplotlibrc文件中对应内容(文件路径就是第一步中查到的字体路径)
font.family : sans-serif
# 去掉前面的#
font.sans-serif : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
# 去掉前面的#,并在冒号后面添加SimHei
axes.unicode_minus : False
# 去掉前面的#,并将True改为False
matplotlib 笔记1: 多点线图、显示label、刻度、xy轴比例、主副轴
matplotlib 笔记2: 调整边界、多个子图、inset子图
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com