Подтвердить что ты не робот

Matplotlib - график выводит текст в виде путей и не может быть преобразован в LaTeX с помощью Inkscape

У меня есть график matplotlib, который я хотел бы сохранить в формате векторной графики, а затем использовать в документе LaTeX.

Я обычно сохраняю его с matplotlib, откройте его с помощью Inkscape и сохраните его как PDF + LaTeX (опустите текст в PDF и создайте файл LaTeX). Это также может быть достигнуто с помощью:

inkscape  -D -z --file=in.pdf --export-pdf=out.pdf --export-latex

Однако для следующего графика текст фактически представляет собой ряд путей. Каждая буква является отдельной, в результате 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'))
4b9b3361

Ответ 1

Я столкнулся с той же проблемой и исправил ее.

В документации matplotlib в http://matplotlib.org/users/customizing.html указано, что значением по умолчанию для параметра svg.fonttype является 'path', что означает, что символы будут преобразованы в пути, когда экспорт в формат svg.

Все, что мне нужно было сделать, это добавить следующую строку в мой script:

matplotlib.rcParams['svg.fonttype'] = 'none'

Таким образом, все символы внедрены правильно, теперь я могу редактировать текст в Inkscape и экспортировать свою фигуру в pdf + Latex, то есть файл pdf и файл pdf_tex, который я включаю в мой файл tex.

Ответ 2

Другим, более постоянным вариантом является размещение

svg.fonttype : none

в вашем matplotlibrc (~/.config/matplotlib/matplotlibrc, например)