matplotlib是个好工具,但还没好透,做出来的图中中文变框框。需要额外设置。
- 获取 matplotlibrc
# 查看matplotlib安装在哪里:
python -c "import matplotlib;print(matplotlib.__file__)"
# your-venv/lib/python3.x/site-packages/matplotlib/mpl-data
# 复制 matplotlibrc 到用户配置目录
mv your-venv/lib/python3.x/site-packages/matplotlib/mpl-data/matplotlibrc ~/.config/matplotlib/
- 修改 matplotlibrc
编辑器中打开 matplotlibrc 文件,找到并修改以下两个地方:
‘#font.family: sans-serif’ » font.family: sans-serif ‘#font.sans-serif: DejaVu Sans,…’ » font.sans-serif: DejaVu Sans,…
然后添加中文字体(ttf 文件的文件名,如下文的 simfang
仿宋字体)
font.sans-serif: simfang
, DejaVu Sans,…
最后将 simfang.ttf
字体文件加入到 mpl-data/fonts/ttf/
目录中。
注:更容易维护的一种配置方式应该是这样:
使用 ln -s
命令将个人字体库 (.local/share/fonts/
) 中的某个字体映射到上述目录
注2:可能需要删除matplotlib的缓存
rm -rf /home/user/.cache/matplotlib
mpl.rcParams
代码块
在作图的模块中添加以下代码:
import matplotlib as mpl
import matplotlib.pyplot as plt
# 中文减号显示问题
mpl.rcParams['axes.unicode_minus'] = False
# 中文字符显示问题
# 名字与ttf文件的名字不同: simfang.ttf >> 'FangSong'
mpl.rcParams['font.sans-serif'] = ['FangSong']
最后,如果有多个 venv 环境,难道要一个一个去修改吗?
pipx
大法是解药。