首页 > 编程问答 >Matplotlib 报告未找到字体系列“serif”

Matplotlib 报告未找到字体系列“serif”

时间:2024-07-25 10:23:31浏览次数:14  
标签:python matplotlib fonts

当我尝试运行时,例如:

mpl.rcParams['font.family'] = 'serif'
plt.rcParams['figure.figsize'] = [15,7]
plt.plot(data['flow-time'], data['staticpressurerecovery'])
plt.xlabel('Time [s]')
plt.ylabel('Static Pressure Recovery [-]')
plt.title('McD13_4S3 Plenum: Performance Coefficient ')
plt.ylim((0.33, 0.4))
plt.grid()
plt.show()

在 Jupyter 笔记本中,我收到以下错误消息:

C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\font_manager.py:1331: UserWarning: findfont: Font family ['serif'] not found. Falling back to DejaVu Sans
  (prop.get_family(), self.defaultFamily[fontext]))

我尝试过的操作:

  1. 删除 fontList.cache fontList.json fontList.py3.cache

  2. 取消注释 matplotlibrc 文件中与字体系列相关的部分

  3. 卸载并重新安装 matplotlib 使用 pip uninstall matplotlib pip install matplotlib

没有解决该问题。我现在获得不同字体的唯一可能方法是使用 LaTeX 作为后端,但这很慢而且没有必要。

接下来我可以尝试什么?

编辑:我使用的是 Windows 10,所以不是使用 apt-get 为我服务。这似乎是解决这些问题的常见方法,但我做不到。看来这些解决方案只是将 Microsoft 字体添加到 Linux 字体管理器中,因此它可能甚至不相关,因为我已经在 Microsoft 计算机上。

最小工作示例:

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

mpl.rcParams['font.family'] = 'serif'
mpl.rcParams['font.serif'] = 'Computer Modern'


t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2*np.pi*t)
plt.plot(t, s)
plt.show()

In fontList.json ,Computer Modern 被列为可用的字体。


该错误信息表明,尽管“Computer Modern”可能被列为可用的字体,但 Matplotlib 在的系统中找不到它。需要做的是安装“Computer Modern”字体,以便 Matplotlib 可以使用它。

由于使用的是 Windows,可以从一个可信来源(如 Google Fonts)下载“Computer Modern”字体。下载完成后,需要安装这些字体文件(.ttf 或 .otf)。

以下是如何安装“Computer Modern”字体的步骤:

  1. 下载字体: 可以从 Google Fonts 下载“Computer Modern”字体: https://fonts.google.com/specimen/Computer+Modern 。确保下载了所有样式(正常、粗体、斜体、粗体斜体)以获得最佳兼容性。

  2. 安装字体:

  3. 定位下载的字体文件(.ttf 或 .otf)。
  4. 双击每个字体文件。
  5. 在打开的窗口中,点击“安装”按钮。

  6. 重启 Jupyter Notebook: 安装字体后,需要重新启动 Jupyter Notebook,以使更改生效。

完成这些步骤后,Matplotlib 应该能够找到并使用“Computer Modern”字体。

如果问题仍然存在,请尝试以下操作:

  • 明确指定字体文件:
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

# 假设将字体文件安装到了默认字体目录
mpl.rcParams['font.family'] = 'serif'
mpl.rcParams['font.serif'] = ['Computer Modern']  # 注意这里使用了列表

t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2*np.pi*t)
plt.plot(t, s)
plt.show()
  • 清除 Matplotlib 缓存:

  • 找到的 Matplotlib 缓存目录。它通常位于 ~/.cache/matplotlib C:\Users\<用户名>\.matplotlib

  • 删除此目录中的所有内容。
  • 重新启动 Jupyter Notebook。

如果问题仍然存在,请提供以下信息,以便我更好地帮助:

  • 的 Matplotlib 版本 ( import matplotlib; print(matplotlib.__version__) )。
  • 的操作系统版本(Windows 10 版本)。

标签:python,matplotlib,fonts
From: 52320969

相关文章

  • Python课程设计项目期末大作业(含免费源代码)
    选题代码下载地址:https://download.csdn.net/download/s44359487yad/89572689选题程序名称:口红色号识别器选题:基于图像处理、人脸识别和Flask构建的图片口红色号识别及商品推荐系统功能:根据上传的图片自动化图像处理后分析脸部特征,并判断其嘴部妆容状态,依托现......
  • python webbrowser.open 不使用默认浏览器
    对你们来说这是一个好奇的家伙..在我的python程序中webbrowser.open('etc..')打开MicrosoftEdge现在奇怪的是,我在与opensChrome(我的默认值)稍有不同的文件夹中还有另一个python程序关于发生了什么的任何想法吗?!!(我知道有人问过类似的问题,但......
  • 如何在 Mac 上运行 Python 文件来读取 txt 文件并将其写入外部硬盘?
    我目前有一个充满了我想阅读的epub的文件夹,一个我已经阅读过并想再次阅读的epub的文件夹,以及一个相应的文件,其中每个文件都有epub文件的名称。问题是,这些文件夹仅位于我的外部硬盘上。我想要做的是让我的脚本解析这些文件夹中的epub列表,并在我的下载文件夹中创建最新的副......
  • 深入探索:使用Python进行网站数据加载逻辑分析与请求
    作为一名资深的Python程序员,我经常需要从网站中提取数据以供分析或进一步处理。这项任务涉及到对网站数据加载逻辑的深入分析,以及使用Python进行高效的网络请求。在本文中,我将分享如何分析网站的数据加载方式,并使用Python的requests库来模拟浏览器行为,获取所需的数据。网站......
  • 如何将 Python 列表添加到 Excel 中已有值的列的末尾?
    我目前正在尝试编写一个程序,将值附加到列表中,然后将这些值添加到Excel数据表中的列中。每次运行该程序时,我都希望在同一列的末尾添加更多值。所以我不确定如何解决这个问题,而且我在网上找到的其他答案也没有取得多大成功。以下是使用openpyxl库在Python中将......
  • 如何学习Python:糙快猛的大数据之路(学习地图)
    在这个AI和大数据主宰的时代,Python无疑是最炙手可热的编程语言之一。无论你是想转行还是提升技能,学习Python都是一个明智之选。但是,该如何开始呢?今天,让我们聊聊"糙快猛"的Python学习之道。什么是"糙快猛"学习法?"糙快猛"学习法,顾名思义,就是:糙:不追求完美,允许存......
  • Python 中 __get__ 方法的内部原理
    我正在摆弄描述符,结果碰壁了。我以为我可以像使用任何其他方法一样直接调用它,但显然,它似乎不一致或者我遗漏了一些东西。假设我有一个用作描述符的坐标类:|||还有一个Point类,它有2个坐标属性:classCoordinate:def__set_name__(self,owner,name):self._na......
  • 使用带有私钥的云前端生成签名 URL 的问题..使用 Python 3.7 为带有空格的 S3 对象生
    我在使用Python3.7为S3对象生成签名URL时遇到问题。具体来说,键中带有空格的对象的URL会导致“访问被拒绝”错误,而没有空格的对象的URL通常工作正常。但是,并非所有不带空格的对象都能正常工作,带空格的对象始终会失败。fromdatetimeimportdatetime,timedeltaimpo......
  • 有没有更好的方法来在存储库中的一组 python 程序之间共享公共代码
    当我想要快速、轻松地做许多不同的事情时,我会选择Python-即我总是会得到许多Python“程序”-例如一组脚本-或者如果我正在玩一些东西,一堆测试程序等-即始终是许多不同程序的松散集合。但是,我会分享某些内容。例如,如果我正在使用AI-我可能有30个左右完全不相......
  • 如何在Python中从两个不同长度的列表创建DataFrame,为第二个列表中的每个值重复第一个
    我是一个超级初学者,所以请耐心等待。我觉得这应该很容易,但我无法弄清楚。我不确定是否应该创建两个列表,然后将它们组合起来,或者是否有办法以这种方式直接创建DataFrame。我需要一列包含这些值:df=pd.DataFrame({'x1':np.linspace(-2.47,2.69,num=101)})然后我将值A......