Mac下Jupyter画图显示中文乱码 - 已解决

之前用Jupyter Notebook 画图的时候,中文字体一直不能显示。出于懒我总是用英文来代替。但总这样也不是法子,昨晚尝试着解决了一下这个问题。现将解决方案呈现如下,亲测好用!

首先,matplotlib中的字体是没有中文字体的,我们先进行字体的安装。步骤如下:

中文字体下载
进入网站下载字体:地址

中文字体安装
在Jupyter中输入如下代码。

import matplotlib
matplotlib.matplotlib_fname()

获得目录:
'/Users/xxx/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc'

根据目录找到 fonts 文件夹,将下载好的字体拖入到 fonts/ttf 的文件夹内。
Mac下Jupyter画图显示中文乱码 - 已解决_第1张图片
修改matplotlibrc

用文本编辑器打开 matplotlibrc 文件,修改以下三个地方:

  • 第一个地方:去掉前面的 #
  • 第二个地方:去掉前面的 #,并添加 SimHei
  • 第三个地方:去掉前面的 #,并修改 True 为 False
    Mac下Jupyter画图显示中文乱码 - 已解决_第2张图片
    Mac下Jupyter画图显示中文乱码 - 已解决_第3张图片

修改完毕后点击保存。

查看安装字体
重启一下 Jupyter,输入以下代码,可以看字体是否安装成功。

from matplotlib.font_manager import _rebuild
_rebuild()

from matplotlib import font_manager
a = sorted([f.name for f in font_manager.fontManager.ttflist])
for i in a:
    print(i)

Mac下Jupyter画图显示中文乱码 - 已解决_第4张图片
使用中文字体
字体安装成功后,这时候再次使用,我们会发现中文字体是可以正常显示了。

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus'] = False  # 负号正常显示

a = np.arange(10)
plt.xlabel('横坐标')
plt.ylabel('纵坐标')
plt.plot(a,a*1.5,a,a*2.5,a,a*3.5,a,a*4.5)
plt.show()

Mac下Jupyter画图显示中文乱码 - 已解决_第5张图片
特别说明

  • 看别人的博客讲,安装完字体后使用要先清理缓存,然鹅,我笨得找不到 .matplotlib/chaches目录。因此没有这一步。
  • 安装完后一直都没有成功,后来突然成功是因为我做了如下的代码修改:(不知道这个是不是主要原因。)
# 修改前
plt.rcParams['font.sans-serif']=['SimHei']
# 修改后
plt.rcParams['font.sans-serif']='SimHei'

Anyway,终于搞定了!希望对大家有帮助。

你可能感兴趣的:(小小经验,mac,python)