python - 如何将文本保存在可在 svg 文件中编辑的 python 图中?
问题描述
我正在尝试将 python 图保存为 svg 文件:
import matplotlib as mpl
mpl.use('svg')
import matplotlib.pyplot as plt
import numpy as np
plt.figure()
x = np.linspace(0,2*np.pi)
y = np.sin(x)
plt.plot(x, y)
plt.xlabel('Phase $\phi$')
plt.ylabel('Signal')
plt.savefig('SineSignal.svg', format = 'svg')
工作至今。但是一旦我在 Inkscape 中打开文件,我就不能再编辑文本了。似乎python将文本保存为图形而不是文本。因此,我既不能在 Inkscape 中更改字体、字体大小等,也不能在我用乳胶创建的 PDF 文件的图中搜索文本元素。
另一种选择是将绘图保存为 PGF(在这种情况下,mpl.use('svg') 必须替换为 mpl.use('pgf')):
plt.savefig('SineSignal.pgf')
这样我仍然无法编辑字体/字体大小,但至少我可以在 pdf 中搜索文本元素。
有什么建议么?在 python 中使用 TikZ 不是一种选择,因为功能非常有限,而且绘图看起来会有所不同。
解决方案
找到了答案。您可以使用
new_rc_params = {'text.usetex': False,
"svg.fonttype": 'none'
}
mpl.rcParams.update(new_rc_params)
以防止 svg 后端将文本呈现为路径。有关更详细的说明,请查看是否有一种有效的方法将 2D 图存储为 python 中的矢量图形?.
推荐阅读
- android - 数据消息与通知消息,(可折叠和不可折叠混淆)
- artificial-intelligence - 如何更新掩码 rcnn 的权重
- jmeter - 性能测试基本规律
- flutter - 如何为对象添加所有动态值?
- java - 与参数化类相关的 Java 问题
- javascript - 角容器尺寸
- oracle - oci_execute(): ORA-00942: 表或视图不存在
- r - 在 R Shiny 中如何呈现反应式数据表?
- jquery - 无法显示警报 onpopstate
- node.js - MongoError:事务中的读取首选项必须是主要的,而不是:secondaryPreferred