linux系统下seaborn无法显示中文字体填坑记----未完待续
程序员文章站
2024-01-28 09:43:58
...
首先,我用fc-list :lang=zh查看了系统的中文字体,哦豁,发现了Noto Sans CJK,于是我写sns.set(font='Noto Sans CJK'),报错:
findfont: Font family ['Noto Sans CJK'] not found. Falling back to DejaVu Sans.
好吧,没办法了,看一下plt里面有啥字体吧
print(matplotlib.matplotlib_fname())
我的地址是/home/catherine/anaconda3/lib/python3.8/site-packages/matplotlib/mpl-data/matplotlibrc
也就是你安装的matplotlib的路径下的/mpl-data/matplotlibrc
注意这里文件打开全是注释,我用nano打开的,所以ctrl+W找了一下font.sans-serif,
根本没有中文字体,我反手就给关了
然后找到/mpl-data下的fonts,看了看现有的字体文件(.ttf文件),想着得自己从哪里搞一个过去...
我默默打开了Windows文件管理,C盘搜索simhei.ttf
然后默默把它拷到了/mpl-data下的fonts里,再次回到刚刚的那个文件去掉两行注释加入simhei
font.serif : simhei, DejaVu Serif, Bitstrea ....
font.sans-serif : simhei, DejaVu Sans, Bitstream Vera Sans, ...
去看一下字体列表
cd ~/.cache/matplotlib
nano一下fontlist-v310.json文件,加入如下代码
{
"fname": "fonts/ttf/simhei.ttf",
"name": "simhei",
"style": "normal",
"variant": "normal",
"weight": 400,
"stretch": "normal",
"size": "scalable",
"__class__": "FontEntry"
},
感觉自己离成功进了一步,接下来用
sns.set_style("darkgrid",{"font.sans-serif":['simhei','Droid Sans Fallback']})
好的,报错没了,中文字体有了,日期和数字乱码了,问题好像更复杂了呢,,,真开心。