You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使matplotlib导出的SVG在Illustrator中支持完整文本编辑?

解决Matplotlib导出SVG在Illustrator中可整体编辑文本的问题

问题复盘

使用Python 3.8的Matplotlib导出SVG图表后,导入Adobe Illustrator CC 2018/22.1时出现两个问题:

  • 英文文本(如"Irradiance")被拆分为单个字母,无法整体编辑;数字则保持完整文本状态。
  • 偶尔弹出提示:"The document uses fonts which are not available",关闭后字体显示正常,但提示并非每次出现。

核心原因

文本拆分是因为Matplotlib的SVG导出设置可能将文本转为路径,或字体嵌入方式导致AI无法识别为完整文本对象;字体提示则源于SVG未正确嵌入字体信息,或AI本地缺少对应字体的匹配项。

分步解决方案

1. 调整Matplotlib的SVG导出参数

确保配置正确的字体和SVG渲染设置,避免文本被拆分为路径:

import matplotlib as mpl
import matplotlib.pyplot as plt

# 重置默认参数并配置字体
mpl.rcParams.update(mpl.rcParamsDefault)
mpl.rcParams['font.family'] = 'Open Sans'
mpl.rcParams['font.size'] = 14
# 关键设置:保留原生文本对象,不转为路径
mpl.rcParams['svg.fonttype'] = 'none'
# 禁用TeX渲染,避免TeX将文本拆分为单个字符
mpl.rcParams['text.usetex'] = False
# 指定备选字体,确保字体名称匹配系统已安装字体
mpl.rcParams['font.sans-serif'] = ['Open Sans', 'sans-serif']

2. 保存SVG时强制嵌入字体

在savefig中添加字体嵌入参数,解决AI的字体缺失提示:

# 替换为你的实际保存路径
fig.savefig(Directory + 'my_figure.svg', transparent=True, metadata={'svg': {'font-embed': 'True'}})

3. 验证系统字体可用性

  • 确认本地已安装Open Sans字体,若未安装,先完成字体安装后再导出SVG。
  • 若字体名称不匹配,可通过以下代码查看系统中可用的Open Sans字体全名:
import matplotlib.font_manager as fm
for font in fm.fontManager.ttflist:
    if 'Open Sans' in font.name:
        print(font.name)

将输出的正确字体名称替换到mpl.rcParams['font.family']中。

4. 优化文件路径处理(可选)

使用pathlib管理路径,避免拼接错误:

from pathlib import Path

save_path = Path(Directory) / 'my_figure.svg'
fig.savefig(save_path, transparent=True, metadata={'svg': {'font-embed': 'True'}})

效果验证

按上述配置导出SVG后,导入Illustrator即可实现:

  • 英文文本以完整文本块呈现,支持整体编辑。
  • 字体缺失提示不再出现(若本地已安装对应字体)。

内容的提问来源于stack exchange,提问作者quantum girl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 09:08:15