Matplotlib绘图中文乱码解决方法

使用python的matplotlib的库生成图片时,中文字体可能会现实乱码(方块),因为matplotlib默认的字体不支持显示中文。 检查Matplotlib环境 查看matplotlib字体配置文件路径 import matplotlib print(matplotlib.matplotlib_fname()) 返回matplotlibrc 文件路径,如: /usr/local/lib/python3.9/site-packages/matplotlib/mpl-data/matplotlibrc 可以得到 ttf 字体文件的路径: /usr/local/lib/python3.9/site-packages/matplotlib/mpl-data/fonts/ttf 查看matplotlib缓存目录 import matplotlib print(matplotlib.get_cachedir()) 返回的缓存路径,如: /home/xxx/.cache/matplotlib TTF字体文件获取 从Windows系统获取字体 # 如微软雅黑 c:\windows\fonts\msyh.ttc 网络搜索TTF中文字体 配置Matplotlib使用中文字体 方法1: 使用font_manager模块加载字体使用 from matplotlib.font_manager import FontProperties import matplotlib.pyplot as plt font = FontProperties(fname='下载的ttf文件路径', size=12) plt.plot([1, 2, 3], [4, 5, 6]) plt.title('中文标题', fontproperties=font) plt.show() 适合于简单的使用plt场景 方法2: 设置matplotlib字体参数 拷贝字体文件到matplotlib的 ttf 字体文件的路径下 删除matplotlib缓存目录下的json文件 查看字体的Family Name from matplotlib import font_manager for font in font_manager.fontManager.ttflist: print(font.fname,font.name) 输出如下数据: /usr/local/lib/python3.9/site-packages/matplotlib/mpl-data/fonts/ttf/msyh.ttc Microsoft YaHei Family Name 为Microsoft YaHei。 注意,没有输出新加入的字体,需要删除缓存目录下的json文件。 4. 使用示例 import matplotlib.pyplot as plt import matplotlib # 指定默认字体 plt.rcParams['font.family'] = 'Microsoft YaHei' # 或其他支持中文的字体 plt.rcParams['axes.unicode_minus'] = False # 解决负号'-'显示为方块的问题 plt.plot([1, 2, 3], [4, 5, 6]) plt.title('中文标题') plt.show()