fgg blog

matplotlibIssue

matplotlib是个好工具,但还没好透,做出来的图中中文变框框。需要额外设置。

  1. 获取 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/
  1. 修改 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
  1. 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 大法是解药。