如何将matplotlib图形导出为带有可编辑文本字段的矢量图形?

Joe*_*e B 2 python matplotlib

我试图导出多个图以在Adobe Illustrator中进行编辑,并且试图将标题,轴标签和条形图标签设置为单独的文本字段。即,如果我在Illustrator(或您选择的编辑器)中单击标题,则整个标题都是其自己的字段。

这是我不带文本字段的矢量图形导出方式:

plt.bar(x_data, y_data)
plt.title('Fancy Title')
plt.xlabel('Informative X label')
plt.ylabel('Felicitous Y label')
plt.draw()
fig.savefig(savepath, bbox_inches='tight', format='svg')
plt.show()
Run Code Online (Sandbox Code Playgroud)

这样会输出漂亮的矢量图形,但是我无法将文本编辑为字段。我可以通过文本转换软件来运行它,但是这样可以稍微移动文本,使所有内容都消失,而字体检测只能由软件来完成。

Imp*_*est 6

您可以将 svg 字体类型设置为无:

import matplotlib.pyplot as plt
plt.rcParams['svg.fonttype'] = 'none'
Run Code Online (Sandbox Code Playgroud)

以下也有效:

  1. 将图另存为pdf, plt.savefig("filename.pdf")
  2. Inkscape 中打开 pdf ,
    即 File/Import... 然后选择在此处输入图片说明 选项。
  3. 现在您可以在 Inkscape 中编辑文本。
  4. (可选)从inkscape 导出图形(例如作为svg 文件),以便稍后将其导入到任何其他程序中。


小智 5

尝试以下行:

import matplotlib as mpl
mpl.rcParams['pdf.fonttype'] = 42
mpl.rcParams['ps.fonttype'] = 42
Run Code Online (Sandbox Code Playgroud)

以我的经验,默认字体类型是不可编辑的,但是这个是。

  • 为什么是42?你确定答案是42吗? (7认同)
  • 这工作了!什么是字体类型? (2认同)