=============================
matplotlib 保存pdf 图时,TrueType font is missing table.
E:\Eprogramfiles\Anaconda3\lib\site-packages\matplotlib\backends\_backend_pdf_ps.py:102: RuntimeWarning: Glyph 8722 missing from current font.
font.set_text(s, 0.0, flags=ft2font.LOAD_NO_HINTING)
The PDF backend does not currently support the selected font.

解决方案
增加一行代码即可:
plt.rcParams['pdf.fonttype'] = 42 # 可行
plt.savefig(r"xxx.pdf", bbox_inches='tight')
好像更新ipython和matplotlib最新版本能够解决。
========================================
在使用Matplotlib保存图形时遇到“TrueType font is missing table”的错误通常是因为字体文件不完整或者缺少某些必需的表。这种问题经常发生在尝试保存图形到某些格式(如PDF或SVG)时,尤其是当字体文件(如TrueType字体)不包含所有必要的字体表时。
解决方案
1. 使用完整的字体文件
确保你使用的字体文件是完整的,特别是当你打算将其用于图形输出时。例如,如果你正在使用Windows操作系统,可以尝试使用系统中预装的字体,如Arial、Times New Roman等。
2. 指定字体路径
在Matplotlib中,你可以指定字体的路径来避免这个问题。这可以通过设置matplotlibrc配置文件或者在使用matplotlib.font_manager动态指定字体来实现。
使用matplotlibrc配置文件:
在Matplotlib的配置文件中(通常是matplotlibrc或者在你的项目目录下的matplotlibrc),你可以添加或修改以下行来指定字体路径:
font.family: sans-serif font.sans-serif: Arial, DejaVu Sans, Liberation Sans, Bitstream Vera Sans, Computer Modern Sans Serif 确保你的字体文件路径被正确包含在列表中。
动态指定字体路径:
import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties font_path = 'path/to/your/font.ttf' # 替换为你的字体文件路径 font_prop = FontProperties(fname=font_path) plt.title('示例标题', fontproperties=font_prop) plt.show() 3. 安装缺失的字体表
如果你有权限修改字体文件,可以尝试使用字体编辑工具(如FontForge)来添加缺失的表。这通常不是一个推荐的方法,因为它可能会损坏字体文件或者引入其他问题。通常,更好的做法是使用一个完整的字体文件。
4. 使用支持更完整字体的格式
当你保存图形时,选择一个对字体支持更好的格式。例如,PNG或JPEG格式通常不会遇到这种问题,因为它们不依赖于字体的嵌入。如果你必须使用PDF或SVG,确保你的字体文件是完整的,并且正确地设置在Matplotlib中。
plt.savefig('figure.pdf') # 改为PNG或JPEG以避免字体问题 总结
确保你的字体文件是完整的,并通过Matplotlib正确设置或指定字体路径。如果你频繁遇到这个问题,考虑使用支持较少字体问题的图像格式(如PNG或JPEG)。如果问题仍然存在,尝试在不同的系统或环境中测试你的代码,以排除特定环境的问题