[Mac OS]解决matplotlib中文显示问题
问题描述
matplotlib画图无法显示中文(中文被替换成方块),如下:
解决方法
Step 1: 下载 SimHei.ttf
方式一:见本文附件
方式二:提取码: wqgy
Step 2: 找出存放字体的ttf文件夹路径
运行python代码:
import matplotlib
print(matplotlib.get_data_path() + '/fonts/ttf')
得到ttf文件夹路径:
/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/matplotlib/mpl-data/fonts/ttf
Step 3: 将SimHei.ttf到ttf文件夹下
在Mac OS的终端(Terminal)中运行命令open
ttf文件夹路径:
open /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/matplotlib/mpl-data/fonts/ttf
复制粘贴SimHei.ttf到ttf文件夹中
Step 4: 用vim编辑matplotlibrc文件
运行python代码:
import matplotlib
print(matplotlib.matplotlib_fname())
得到matplotlibrc文件路径:
在Mac OS的终端(Terminal)中运行命令vim
matplotlibrc文件路径
vim /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/matplotlib/mpl-data/matplotlibrc
按下i
键, 修改3处:
- 去掉
#font.family: sans-serif
这一行开头的#
- 去掉
#font.sans-serif: DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
这一行开头的#
, 并在font.sans-serif:
后插入SimHei,
(注意有逗号) - 去掉
#axes.unicode_minus: True
开头的#
, 并将True
改为False
然后按下esc
键, 输入:wq
, 按下enter
键
效果图:
Step 5: 删除.matplotlib文件夹(内有字体缓存)
运行python代码:
import matplotlib
print(matplotlib.get_cachedir())
得到 .matplotlib文件夹路径
/Users/apple/.matplotlib
在Mac OS的终端(Terminal)中运行命令rm -rf
.matplotlib文件夹路径
rm -rf /Users/apple/.matplotlib
Step 6: 测试能否显示中文
运行python代码:
import matplotlib.pyplot as plt
plt.plot([1,2,3], [2,3,4])
plt.title("测试能否显示中文")
plt.show()
结果:
至此大功告成!