使用matplotlib创建的EPS文件中文本显示不正确

3 投票
1 回答
1367 浏览
提问于 2025-04-17 22:20

我在使用matplotlib生成的eps文件中遇到了字体问题。

在eps文件里,字体显示正常,但当我把这个文件粘贴到Microsoft Word里时,文本(比如标签、刻度、标题等)却不显示了。

我已经尝试过修改maplotlib.rcParams,因为之前遇到其他eps文件的文本问题时,这个方法有效,但这次没有用。

补充:我也尝试过更改matplotlib.use("xxx"),但也没有帮助。

我的代码是:

# -*- coding: utf-8 -*-

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm

a = np.array([[1,2,3],[4,5,6],[7,8,9]])

fig = plt.figure(figsize=(12,10))
ax = fig.add_subplot(111, projection='3d')

plt.title("lalala",family='Courier New')
x = range(len(a))
y = range(len(a))
X,Y = np.meshgrid(x,y)
Z = a

ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.set_zlabel("Z")

ax.plot_surface(X,Y,Z, cmap=plt.cm.Reds, cstride=1, rstride=1,alpha=0.3)

plt.savefig("texttestqua.eps")
plt.show()

有没有办法把eps文件里的文本“画出来”?也就是说,让文本不是“字体”,而是直接变成图形向量?

1 个回答

0

我不太确定你的问题是因为matplotlib无法正确保存你的eps文件,还是因为Microsoft Word无法加载除了emf/wmf以外的矢量图形……不过,我还是想试试。

其实有很多种后端可供选择(比如GTK、GTKAgg、GTKCairo、GTK3Agg、GTK3Cairo、CocoaAgg、MacOSX、Qt4Agg、Qt5Agg、TkAgg、WX、WXAgg、Agg、Cairo、GDK、PS、PDF、SVG),你有没有尝试过所有的,或者至少尝试过一些比较靠谱的?比如说,使用PS后端是否有效?


我这里使用的是TkAgg后端,你的脚本给我产生了以下输出:screenshoted_eps_with_text


但是当我把这个文件粘贴到Microsoft Word里时,文本(标签、刻度、标题……)没有显示出来。

据我所知,Microsoft Word本身不支持矢量图形,除非是emf格式。你可以查看这个链接获取更多帮助。

如果这样还不能解决你的问题,请考虑更清楚地描述一下你的具体问题。

撰写回答