matplotlib添加字体及中文乱码问题

本文介绍如何在Matplotlib中正确显示中文,包括下载并安装中文字体、配置字体路径及更新字体缓存的方法。文中提供了具体操作步骤及代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 下载中文字体:
    http://www.font5.com.cn/font_download.php?id=151&part=1237887120

  2. 将下载的字体ttf文件放到matplotlib的字体库位置:
    anaconda3/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/

  3. 删除matplotlib的字体缓存,文件位置:
    mpl.get_cachedir()–>获取字体cache位置的方法(应该有获取其他配置的方法)
    .cache/matplotlib/fontList.json
    该文件删除后,会自动生成,重新查找解析字体库,并生成这个文件

  4. 代码中的修改:
    rcParams[‘font.family’] = ‘sans-serif’ #用来正常显示中文
    rcParams[‘font.sans-serif’] = [‘SimHei’] #用来正常显示负号

  5. 永久修改:
    mpl.matplotlib_fname() –>获取配置文件的方法
    可在matplotlib的配置文件中修改:/home/rickey/anaconda3/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc
    其中有font.family和font.sans-serif的配置项

  6. font.family和font.sans-serif的联系:
    font.family是一个字体集,其中包含多种字体,比如sans-serif表示中文,中文可以有多种字体,比如正楷,宋体等
    SimHei :黑体
    SimSun :宋体
    以上具体的某一种字体可以在字体网站上下载,并安装。

    https://www.cnblogs.com/tkzc2013/p/5857794.html

<think>我们正在解决Windows系统下JupyterNotebook中matplotlib显示中文乱码问题。根据引用[1]和引用[2]提供的思路,我们可以结合Windows环境进行以下操作:1.确保系统中存在中文字体(如黑体、宋体等),或者安装一个中文字体(如微软雅黑)。2.在matplotlib中指定使用该中文字体。3.清除matplotlib的缓存,然后重新运行。具体步骤:步骤1:检查系统中是否有中文字体(如微软雅黑)。如果没有,需要下载并安装。步骤2:在代码中设置matplotlib字体。步骤3:清除缓存。但是,在Windows系统中,我们通常不需要像Linux那样安装字体(因为系统自带),但需要知道字体名称,并在matplotlib中正确设置。我们可以通过以下代码来列出所有可用的字体,并找到中文字体的名称: ```pythonimport matplotlib.font_managerfont_list =[f.name forf inmatplotlib.font_manager.fontManager.ttflist] print(font_list)```然后,我们可以设置matplotlib使用这个中文字体。有两种方式:方式一:在代码中通过rcParams设置方式二:修改matplotlibrc配置文件这里我们采用在代码中设置的方式,因为这样更便于在JupyterNotebook中使用。另外,引用[2]中提到清除缓存的操作,在Windows下同样适用。因此,完整的解决方案如下:</think>### Windows系统下Jupyter Notebook解决Matplotlib中文乱码问题 在Windows系统下的Jupyter Notebook中解决Matplotlib中文乱码问题,可通过以下步骤实现: #### 步骤1:确认系统字体 1. 检查Windows系统是否安装中文字体(如微软雅黑、宋体等) 2. 打开字体目录:`C:\Windows\Fonts` 3. 确认存在中文字体文件(如`msyh.ttc`微软雅黑) #### 步骤2:设置Matplotlib参数 在Jupyter Notebook单元格中运行以下代码: ```python import matplotlib.pyplot as plt import matplotlib as mpl # 设置字体为系统支持的中文字体 plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'KaiTi', 'SimSun'] # 中文支持 plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题 # 验证设置 plt.figure() plt.title('中文标题测试') plt.xlabel('X轴标签') plt.ylabel('Y轴标签') plt.plot([1,2,3], [4,5,6]) plt.show() ``` #### 步骤3:清除Matplotlib缓存 如果仍显示乱码,清除缓存: ```python import matplotlib import shutil # 清除缓存 shutil.rmtree(matplotlib.get_cachedir()) ``` #### 步骤4:永久配置(可选) 创建或修改Matplotlib配置文件: 1. 找到配置文件位置: ```python import matplotlib print(matplotlib.matplotlib_fname()) ``` 2. 在配置文件中添加: ```ini font.family : sans-serif font.sans-serif : SimHei, Microsoft YaHei, SimSun, KaiTi axes.unicode_minus : False ``` #### 验证结果 成功设置后,图表应正常显示中文标题、坐标轴标签等元素,不会出现方框或乱码[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值