解决python中matplotlib中文乱码 for Mac

当在MacBook的pycharm上使用matplotlib绘制图表时,中文很可能会无法正常显示,如下图中图表文字部分的方块:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-2, 6, 50)
y1 = x + 3  # 曲线 y1
plt.figure()  # 定义一个图像窗口
plt.plot(x, y1)  # 绘制曲线 y1
plt.title('直线图')
plt.show()

解决办法:
查看matplotlib支持的字体集

from matplotlib import font_manager

ttf_lists = font_manager.fontManager.ttflist
for font in ttf_lists:
    print(font)





从中选择一种中文字体,以宋体为例:

plt.rcParams['font.sans-serif']=['Songti']
plt.rcParams['axes.unicode_minus']=False

这样就可以显示成功了,如下图


注意:如果查看的字体集宋体为如下所示:






那么上面语句应该为

# plt.rcParams['font.sans-serif']=['Songti']
plt.rcParams['font.sans-serif']=['Songti SC']
plt.rcParams['axes.unicode_minus']=False

如果查看的matplotlit字体集中没有宋体,然后你想使用宋体,则需要修改matplotlit配置文件,具体操作如下

  1. 查看Mac中文字体集

    在Focus Search (聚焦搜索)中, 在电脑屏幕右上角点击搜索图标,搜索font, 进入字体册, 选择宋体(没有宋体,那你就需要下载该字体了)
    如宋体-简, 选择常规体, 右键在Folder (访达)中显示,获取路径(右键,显示简介)

    复制路径 option + command + c

/Library/Fonts/Songti.ttc
  1. 修改Matplotlib配置
    进入matplotlib的配置路径
cd /User/xxxx/.matplotlib

修改配置中的字体文件fontList.json,在ttflist列表中, 添加"Songti"的中文字体集。首先,进入fontList.json

vi fontList.json

找到ttflist

/ttflist

添加宋体字体集

{
      "fname": "/Library/Fonts/Songti.ttc",
      "name": "Songti",
      "style": "normal",
      "variant": "normal",
      "weight": 400,
      "stretch": "normal",
      "size": "scalable",
      "_class": "FontEntry"
}

查看matplotlib支持的字体集,这时候就显示有"Songti"了 (当然上述的"Songti SC"也可以在这里改为"Songti" ,如果你不嫌麻烦,也可以不改,按照上面的语句也可以使用),设置就完成了!

  1. 使用字体集
plt.rcParams['font.sans-serif']=['Songti']
plt.rcParams['axes.unicode_minus']=False

参考:
1、matplotlib显示中文 for mac
2、Python-MacOS上matplotlib显示中文字体

你可能感兴趣的:(解决python中matplotlib中文乱码 for Mac)