Saltar al contenido

¿Cómo puedo importar y escalar gráficos de matplotlib, manteniendo las fuentes en el tamaño correcto?

Puede que se de el caso de que encuentres alguna incompatibilidad en tu código o proyecto, recuerda probar siempre en un entorno de testing antes aplicar el código al proyecto final.

Solución:

El backend matplotlib PGF se guarda como PGF sin formato. Lo que probablemente quieras en su lugar es pgfplotsque puedes obtener usando tikzplotlibsuponiendo que sus gráficos no sean demasiado complejos y que se admitan todas las funciones.

Ejemplo de secuencia de comandos de Python para crear una figura:

from pylab import *
from tikzplotlib import save as tikz_save
x = linspace(0, 10, 101)
plot(x, sin(x))
xlabel('$x$-axis')
ylabel('$y$-axis')
tikz_save('fig.tikz',
           figureheight = '\figureheight',
           figurewidth = '\figurewidth')

Ejemplo de documento adjunto de LaTeX que trae las gráficas con dos dimensiones diferentes (puede usar input; Estoy usando InputIfFileExists para que las cifras faltantes no eliminen la compilación):

documentclassarticle

usepackagepgfplots

newlengthfigureheight
newlengthfigurewidth

begindocument

setlengthfigureheight2in
setlengthfigurewidth3in
InputIfFileExistsfig.tikztextbf!! Missing graphics !!

setlengthfigureheight3in
setlengthfigurewidth4in
InputIfFileExistsfig.tikztextbf!! Missing graphics !!

enddocument

Producción:

ingrese la descripción de la imagen aquí

Dependiendo de lo que esté haciendo, también podría considerar usar mi paquete PythonTeX para poner todo en la fuente de LaTeX:

documentclassarticle

usepackagepgfplots
usepackage[stdout=false]pythontex
% matplotlib2tikz prints messages to stdout, so don't include
% stdout automatically; could also redirect stdout to avoid this
setpythontexworkingdir.
% set PythonTeX to use the document root directory as the working
% directory, so that all plots will be saved there; could use 
% another location, but then would need to specify a path when
% using input and InputIfFileExists

newlengthfigureheight
newlengthfigurewidth

begindocument

beginpycode
from pylab import *
from tikzplotlib import save as tikz_save
x = linspace(0, 10, 101)
plot(x, sin(x))
xlabel('$x$-axis')
ylabel('$y$-axis')
tikz_save('fig.tikz',
       figureheight = '\figureheight',
       figurewidth = '\figurewidth')
endpycode

setlengthfigureheight2in
setlengthfigurewidth3in
InputIfFileExistsfig.tikztextbf!! Missing graphics !!

setlengthfigureheight3in
setlengthfigurewidth4in
InputIfFileExistsfig.tikztextbf!! Missing graphics !!

enddocument

Te mostramos las comentarios y valoraciones de los usuarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *