从 python `plotly` 导出矢量化图像时保留字体

Ant*_*ali 5 python fonts svg plotly

我正在尝试从 导出矢量化图像plotly,但我想知道为什么.svg导出不保留文本字体。我的想法是导出.svg,在 Inkscape 中组织一些图像,然后将复杂图像导出为.png,但我需要与我的 Overleaf LaTeX 文档具有相同字体的图像。这是重现该问题的代码:

a = [1, 2, 3, 4, 5, 6]
b = [5, 6, 8, 2, 4, 3]
data = np.column_stack([a, b])
df = pd.DataFrame(data, columns=["A", "B"])
fig = px.scatter(df)
fig.update_layout(
    font=dict(family="Computer Modern", size=25),
)
fig.write_image('png.png')
fig.write_image('svg.svg')
Run Code Online (Sandbox Code Playgroud)

svg 文件的 inkscape 片段 保留字体的 png 文件

Dav*_*rks -1

解决方案(感谢评论员):

fig.update_layout(
    font=dict(family="arial", size=18)
)
Run Code Online (Sandbox Code Playgroud)

我有类似的问题,来这里寻求答案。评论很有​​帮助。为了进一步解决这个问题,绘图的矢量化版本 (SVG/PDF) 作为剪切组而不是作为字体保留在 Illustrator 中。

matplotlib我还找到了以下推荐的解决方案:

matplotlib.rcParams['pdf.fonttype'] = 42
plt.rcParams.update({'font.family':'Arial'})
Run Code Online (Sandbox Code Playgroud)

我最初忽略了两个重要的细节:

  • arial在我的系统中需要为小写,但Arial不起作用。评论中的解决方案有效,但由于大写,我最初没有注意到。
  • 在 Illustrator 中,您需要先取消组合并移动字体顶部的一些不可见对象,然后才能编辑字体,该细节一开始有点令人困惑。