matplotlib - plot将文本输出为路径,无法通过Inkscape转换为LaTeX

goz*_*lli 19 latex matplotlib vector-graphics inkscape

我有一个matplotlib情节,我想以矢量图形格式保存,然后在LaTeX文档中使用.

我通常保存它matplotlib,用Inkscape打开它并将其保存为PDF + LaTeX(省略PDF格式的文本并创建LaTeX文件).这也可以通过以下方式实现:

inkscape  -D -z --file=in.pdf --export-pdf=out.pdf --export-latex
Run Code Online (Sandbox Code Playgroud)

但是,对于下面的图,文本实际上是一系列路径.每个字母都是独立的,导致Inkscape无法保存不同的tex文件.

为什么文本没有呈现为文本而是作为下面代码中的路径?注意使用usetex=True并没有什么区别.

谢谢.

from scipy.stats import lognorm
from matplotlib import rc

#rc('text', usetex=True)
rc('font', family='Times New Roman')
rc('font', size='20.0')

mu    = 1.7
sigma = 1.1
n, bins, patches = plt.hist(data, bins=10000, facecolor='k', edgecolor='k', 
                            normed=True, alpha=0.3, histtype='stepfilled',
                            label='\\noindent Empirical data')
y = lognorm.pdf( bins, sigma, scale=np.exp(mu))
plt.xlim( (0,50) )
plt.plot(bins, y, '-', color='k', linewidth=2, label='\\noindent Lognormal curve')
plt.ylim( (0, .15) )
plt.xlabel('my x label')
plt.ylabel('my y label')

plt.grid()
plt.legend()
plt.savefig(os.path.expanduser('~/myfile.svg'))
Run Code Online (Sandbox Code Playgroud)

Ant*_*ury 29

我遇到了同样的问题并修复了它.

在matplotlib文档http://matplotlib.org/users/customizing.html指出的参数的默认值svg.fonttype'path',这意味着字符将导出到SVG格式时,可以转换为路径.

我需要做的就是在我的脚本中添加以下行:

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

这样所有字符都被正确嵌入,我现在可以在Inkscape中编辑文本并将我的图形导出为pdf + Latex,即我在tex文件中包含的pdf文件和pdf_tex 文件.


pst*_*ohn 8

另一个更永久的选择是放

svg.fonttype : none
Run Code Online (Sandbox Code Playgroud)

在你的matplotlibrc中(例如〜/ .config/matplotlib/matplotlibrc)