matplotlib - extension - pdf_tex
matplotlib-traza el texto de salida como rutas y no puede convertirse a LaTeX por Inkscape (2)
Me encontré con el mismo problema y lo arreglé.
La documentación de matplotlib en http://matplotlib.org/users/customizing.html indica que el valor predeterminado para el parámetro svg.fonttype
es ''path''
, lo que significa que los caracteres se convertirán en rutas cuando se exporten al formato svg.
Todo lo que tenía que hacer era agregar la siguiente línea en mi script:
matplotlib.rcParams[''svg.fonttype''] = ''none''
De esta manera, todos los caracteres están incrustados correctamente, ahora puedo editar el texto en Inkscape y exportar mi figura a pdf + Latex, es decir, un archivo pdf y un archivo pdf_tex que incluyo en mi archivo tex
.
Tengo un gráfico de matplotlib
que me gustaría guardar en un formato de gráficos vectoriales para luego utilizarlo en un documento LaTeX.
Normalmente lo matplotlib
desde matplotlib
, lo abro con Inkscape y lo matplotlib
como PDF + LaTeX (omita el texto en PDF y cree el archivo LaTeX). Esto también se puede lograr con:
inkscape -D -z --file=in.pdf --export-pdf=out.pdf --export-latex
Sin embargo, para la siguiente gráfica, el texto es en realidad una serie de rutas. Cada letra es separada, lo que hace que Inkscape no pueda guardar un archivo tex
diferente.
¿Por qué el texto no se representa como texto sino como rutas en el código a continuación? Tenga en cuenta que el uso de usetex=True
no hace una diferencia.
Gracias.
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''))
Otra opción, más permanente, es poner
svg.fonttype : none
en su matplotlibrc (~ / .config / matplotlib / matplotlibrc, por ejemplo)