这两天被这个中文正负号的问题困扰了很久,网上的方法试了好多,然后并没有什么卵用
plt.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
findfont: Font family [‘sans-serif’] not found. Falling back to DejaVu Sans.
这里是因为Matplotlib 画图的时候使用了中文,而现在这玩意还不支持中文字体,这就很尴尬了
画出来的图emmm就是哪里不太对
这里的图片x,y轴的名字全框框,坐标系的名字也是框框
注意下面的第一种解决方案,博主实际操作了一下,但是按照这个方案并不能解决博主的问题,可以看第二种解决方案
>>> import matplotlib
>>> print(matplotlib.matplotlib_fname())
/home/yyy/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
# matplotlibrc 是个可编辑文件,要去上一级目录的哦
重点是下面:
cd /home/yyy/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts
/home/yyy/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
更改如下内容, 将前面的#号去掉,如果是Ubuntu桌面版本就gedit
吧方便, 如果是server版本那就vim
不香吗???
font.family : sans-serif
font.sans-serif : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
axes.unicode_minus,将True改为False,作用就是解决负号'-'显示为方块的问题
cd /home/yyy/.cache
rm -rf matplotlib
删除缓存再次运行程序据说会有效果,如果不行重启才会有效果,然而, 但是, 依然,-----------
报错(其实是警告)
**findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans.**
cd /home/yyy/.cache/matplotlib
ls
fontlist-v310.json tex.cache
"ttflist": [ // 字体列表
{
"fname": "fonts/ttf/STIXSizThreeSymBol.ttf", //路径
"name": "STIXSizeThreeSym", // 字体名称
"style": "normal",
"variant": "normal",
"weight": "bold",
"stretch": "normal",
"size": "scalable",
"__class__": "FontEntry"
},
{
"fname": "/usr/share/fonts/truetype/noto/NotoSerifDevanagari-Regular.ttf", //这个路径很重要划重点这里要考的
"name": "Noto Serif Devanagari",
"style": "normal",
"variant": "normal",
"weight": 400,
"stretch": "normal",
"size": "scalable",
"__class__": "FontEntry"
},
/usr/share/fonts/truetype/noto
路径下 cd /home/yyy/.cache
rm -rf matplotlib
然后运行我的 python代码
图片如下所示:中文字符显示正常了,没有了框框好舒服
{
"fname": "/usr/share/fonts/truetype/noto/Simhei.ttf",
"name": "SimHei",
"style": "normal",
"variant": "normal",
"weight": 400,
"stretch": "normal",
"size": "scalable",
"__class__": "FontEntry"
},