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

3
我正在尝试将多个绘图导出以便在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()

这会输出一个漂亮的矢量图形,但我无法将文本作为字段进行编辑。我可以通过文本转换软件运行它,但那会使文本略微移动并使所有内容看起来不准确,并且将字体检测留给软件。


2个回答

8

尝试这些命令:

import matplotlib as mpl
mpl.rcParams['pdf.fonttype'] = 42
mpl.rcParams['ps.fonttype'] = 42

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

7
为什么是42?你确定42是答案吗? - Arco Bast
如果42确实是答案,我们确定我们知道问题是什么吗? - mishaF

6
你可以将 SVG 的字体类型设置为 none:
import matplotlib.pyplot as plt
plt.rcParams['svg.fonttype'] = 'none'

以下方法也可以实现:
  1. 将图形保存为pdf格式,plt.savefig("filename.pdf")
  2. Inkscape中打开pdf文件,即选择文件/导入...,然后选择enter image description here选项。
  3. 现在可以在Inkscape中编辑文本内容。
  4. (可选)从Inkscape导出图形(例如作为svg文件),以便稍后在任何其他程序中导入它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接