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

本文介绍了在Mac环境下,Jupyter Notebook中文字体显示乱码的问题及其解决方法。通过下载中文字体、安装字体、修改matplotlibrc配置文件,以及检查字体安装是否成功,最终成功解决了画图时中文显示不正常的问题。无需清除缓存,只需简单代码修改即可。

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

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

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

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

import matplotlib
matplotlib.matplotlib_fname()

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

根据目录找到 fonts 文件夹,将下载好的字体拖入到 fonts/ttf 的文件夹内。
1
修改matplotlibrc

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

  • 第一个地方:去掉前面的 #
  • 第二个地
<think>好的,我现在需要帮助用户在Jupyter Notebook中使用Matplotlib或Seaborn进行数据可视化。首先,我应该整理一下用户的问题和已有的引用信息。用户提到了三个引用,其中引用[1]和[2]涉及Matplotlib和Seaborn的设置,引用[3]是关于导入数据和设置中文显示。 首先,用户想知道如何在Jupyter中绘图,可能需要步骤指导。根据引用[1],Jupyter有两种模式:notebook和inline。用户需要知道如何启用这些模式。引用[2]显示导入库的代码,比如pandas、matplotlib.pyplot和seaborn,并且使用%matplotlib inline。引用[3]中的代码有设置中文字体的部分,这可能对中文用户很重要,因为默认情况下Matplotlib可能不支持中文显示,导致乱码。 接下来,我应该分步骤回答。首先是如何配置交互模式,然后是导入必要的库,接着是数据准备,再是使用Matplotlib和Seaborn绘图,最后处理中文显示的问题。可能还需要提到常见问题,比如图像不显示或者中文乱码解决方法。 需要注意的是,用户可能不熟悉代码的具体步骤,所以需要给出清晰的示例代码。例如,使用Matplotlib绘制折线图或散点图,Seaborn的箱线图或热力图。同时,中文设置的部分需要详细说明,比如设置字体为'Arial Unicode MS'或者使用系统支持的字体。 另外,用户的问题可能涉及两种库的比较,所以需要简要说明Matplotlib和Seaborn的区别,比如Seaborn是基于Matplotlib的,提供更高级的接口和美观的样式。 可能还需要检查引用内容是否正确对应步骤。例如,引用[1]中的%matplotlib notebook和inline的区别,引用[3]中的字体设置。确保这些引用被正确标注在回答中,比如在设置交互模式时引用[1],在设置中文时引用[3]。 最后,生成的相关问题应该围绕用户可能遇到的后续问题,比如如何保存图像、调整样式、解决图形不显示等。确保问题具有逻辑性和连贯性,帮助用户进一步学习。</think>在Jupyter Notebook中使用Matplotlib和Seaborn进行数据可视化可分为以下步骤: ### 一、环境配置 1. **启用交互模式**(二选一): ```python %matplotlib notebook # 可缩放/平移的交互模式[^1] # 或 %matplotlib inline # 生成静态图像 ``` 2. **导入核心库**: ```python import matplotlib.pyplot as plt import seaborn as sns import pandas as pd ``` ### 二、数据准备 以鸢尾花数据集为例: ```python from sklearn import datasets iris = datasets.load_iris() df = pd.DataFrame(iris.data, columns=['花萼长', '花萼宽', '花瓣长', '花瓣宽']) ``` ### 三、Matplotlib绘图 1. **基础折线图**: ```python plt.plot(df['花萼长'], df['花萼宽'], 'g--') plt.title('花萼尺寸关系') plt.xlabel('长度(cm)') plt.ylabel('宽度(cm)') plt.show() ``` 2. **散点图矩阵**: ```python pd.plotting.scatter_matrix(df, figsize=(10,6)) plt.suptitle('特征分布矩阵', y=1.02) ``` ### 四、Seaborn高级可视化 1. **箱线图分析**: ```python sns.boxplot(data=df) plt.xticks(rotation=30) plt.title('特征值分布') ``` 2. **热力图展示**: ```python corr = df.corr() sns.heatmap(corr, annot=True, cmap='coolwarm') plt.title('特征相关性') ``` ### 五、中文显示配置 ```python plt.rcParams['font.family'] = 'Arial Unicode MS' # Mac系统[^3] # Windows可使用 SimHei,Linux使用 Noto Sans CJK plt.rcParams['axes.unicode_minus'] = False # 解决负号显示异常 ``` ### 六、常见问题排查 | 现象 | 解决方案 | |------|----------| | 图形未显示 | 检查是否执行`plt.show()`或忘记`%matplotlib inline`[^1] | | 中文乱码 | 确认字体配置正确,可用`plt.rcParams['font.sans-serif']`查看当前字体[^3] | | 图像模糊 | 添加`%config InlineBackend.figure_format = 'retina'`提升分辨率 |
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值