xlabel print inside font color python matplotlib tex

python - print - ¿Cómo obtener la misma fuente(estilo, tamaño, etc.) en la salida de matplotlib que en la salida de látex?



python text matplotlib (2)

Alternativamente, puede utilizar el backend PGF de Matplotlib. Exporta su gráfico usando el paquete PGF de LaTeX, luego usará las mismas fuentes que usa su documento, ya que es solo una colección de comandos LaTeX. Agregue entonces en el entorno de la figura utilizando el comando de entrada, en lugar de includegraphics:

/begin{figure} /centering /input{your_figure.pgf} /caption{Your caption} /end{figure}

Si necesita ajustar los tamaños, el paquete de ajustes puede ayudar.

Tengo un documento .tex en el que un gráfico está creado por el módulo de python matplotlib . Lo que quiero es que el gráfico se combine con el documento lo mejor posible. Así que quiero que los caracteres utilizados en el gráfico se vean exactamente como los otros mismos caracteres en el resto del documento.

Mi primer intento se ve así (el matplotlibrc matplotlibrc):

text.usetex : True text.latex.preamble: /usepackage{lmodern} #Used in .tex-document font.size : 11.0 #Same as in .tex-document backend: PDF

Para compilar el .tex en el que se incluye la salida PDF de matplotlib , se usa matplotlib .

Ahora, la salida no se ve mal, pero se ve algo diferente, los caracteres en el gráfico parecen más débiles en el ancho del trazo.

¿Cuál es el mejor enfoque para esto?

EDITAR: Ejemplo mínimo: LaTeX-Input:

/documentclass[11pt]{scrartcl} /usepackage[T1]{fontenc} /usepackage[utf8]{inputenc} /usepackage{lmodern} /usepackage{graphicx} /begin{document} /begin{figure} /includegraphics{./graph} /caption{Excitation-Energy} /label{fig:graph} /end{figure} /end{document}

Python-Script:

import matplotlib.pyplot as plt import numpy as np plt.plot([1,2,3,4]) plt.xlabel("Excitation-Energy") plt.ylabel("Intensität") plt.savefig("graph.pdf")

Salida de PDF:


La diferencia en las fuentes puede deberse a un parámetro incorrecto que muestra las imágenes con matplotlib o equivoca su integración en el documento final. Creo que el problema en text.latex.preamble: / usepackage {lmodern} . Esto funciona muy mal e incluso los desarrolladores no garantizan su viabilidad, cómo puede encontrar aquí . En mi caso no funcionó en absoluto.

Diferencias mínimas en la fuente asociada con la familia de fuentes. Para arreglar esto necesitas: ''font.family'': ''lmodern'' en rc . Otras opciones y configuraciones más detalladas se pueden encontrar aquí.

Para suprimir este problema, utilicé un método ligeramente diferente: directo. plt.rcParams [''text.latex.preamble''] = [r "/ usepackage {lmodern}"] . No es extraño, pero funcionó. Más información se puede encontrar en el enlace de arriba.

Para evitar estos efectos, sugiera echar un vistazo a este código:

import matplotlib.pyplot as plt #Direct input plt.rcParams[''text.latex.preamble'']=[r"/usepackage{lmodern}"] #Options params = {''text.usetex'' : True, ''font.size'' : 11, ''font.family'' : ''lmodern'', ''text.latex.unicode'': True, } plt.rcParams.update(params) fig = plt.figure() #You must select the correct size of the plot in advance fig.set_size_inches(3.54,3.54) plt.plot([1,2,3,4]) plt.xlabel("Excitation-Energy") plt.ylabel("Intensität") plt.savefig("graph.pdf", #This is simple recomendation for publication plots dpi=1000, # Plot will be occupy a maximum of available space bbox_inches=''tight'', )

Y finalmente pasar al látex:

/documentclass[11pt]{scrartcl} /usepackage[T1]{fontenc} /usepackage[utf8]{inputenc} /usepackage{lmodern} /usepackage{graphicx} /begin{document} /begin{figure} /begin{center} /includegraphics{./graph} /caption{Excitation-Energy} /label{fig:graph} /end{center} /end{figure} /end{document}

Resultados

Como se puede ver en una comparación de dos fuentes: no existen diferencias (1 - MatPlotlib, 2 - pdfLaTeX)