当我尝试运行时,例如:
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]))
我尝试过的操作:
-
删除
fontList.cache
、fontList.json
和fontList.py3.cache
-
取消注释
matplotlibrc
文件中与字体系列相关的部分 -
卸载并重新安装
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”字体的步骤:
-
下载字体: 可以从 Google Fonts 下载“Computer Modern”字体: https://fonts.google.com/specimen/Computer+Modern 。确保下载了所有样式(正常、粗体、斜体、粗体斜体)以获得最佳兼容性。
-
安装字体:
- 定位下载的字体文件(.ttf 或 .otf)。
- 双击每个字体文件。
-
在打开的窗口中,点击“安装”按钮。
-
重启 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 版本)。