matplotlib - font - subplot python
Matplotlib, fuente consistente utilizando látex (2)
Mi problema es que me gustaría usar títulos de látex en algunas parcelas, y no látex en otras. En este momento, matplotlib tiene dos fuentes predeterminadas diferentes para títulos de látex y títulos que no sean de látex, y me gustaría que los dos sean coherentes. ¿Hay alguna configuración de RC que deba cambiar que permita esto automáticamente?
Genero un diagrama con el siguiente código:
import numpy as np
from matplotlib import pyplot as plt
tmpData = np.random.random( 300 )
##Create a plot with a tex title
ax = plt.subplot(211)
plt.plot(np.arange(300), tmpData)
plt.title(r''$W_y(/tau, j=3)$'')
plt.setp(ax.get_xticklabels(), visible = False)
##Create another plot without a tex title
plt.subplot(212)
plt.plot(np.arange(300), tmpData )
plt.title(r''Some random numbers'')
plt.show()
Aquí está la inconsistencia de la que estoy hablando. Las etiquetas de eje geométrico son de apariencia delgada en relación con los títulos .:
Para que el texto tex-style / mathtext se vea como el texto normal, debe establecer la fuente mathtext en Bitstream Vera Sans,
import matplotlib
matplotlib.rcParams[''mathtext.fontset''] = ''custom''
matplotlib.rcParams[''mathtext.rm''] = ''Bitstream Vera Sans''
matplotlib.rcParams[''mathtext.it''] = ''Bitstream Vera Sans:italic''
matplotlib.rcParams[''mathtext.bf''] = ''Bitstream Vera Sans:bold''
matplotlib.pyplot.title(r''ABC123 vs $/mathrm{ABC123}^{123}$'')
Si desea que el texto normal se vea como el texto del texto matemático, puede cambiarlo todo a Stix. Esto afectará a las etiquetas, títulos, tics, etc.
import matplotlib
matplotlib.rcParams[''mathtext.fontset''] = ''stix''
matplotlib.rcParams[''font.family''] = ''STIXGeneral''
matplotlib.pyplot.title(r''ABC123 vs $/mathrm{ABC123}^{123}$'')
La idea básica es que debe establecer las fuentes regular y mathtext para que sean iguales, y el método para hacerlo es un poco oscuro. Puede ver una lista de las fuentes personalizadas,
sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])
Como mencionaron otros, también puede hacer que Latex represente todo para usted con una fuente configurando text.usetex en rcParams, pero eso es lento y no del todo necesario.
EDITAR
si desea cambiar las fuentes utilizadas por LaTeX dentro de matplotlib, consulte esta página
http://matplotlib.sourceforge.net/users/usetex.html
uno de los ejemplos hay
from matplotlib import rc
rc(''font'',**{''family'':''sans-serif'',''sans-serif'':[''Helvetica'']})
## for Palatino and other serif fonts use:
#rc(''font'',**{''family'':''serif'',''serif'':[''Palatino'']})
rc(''text'', usetex=True)
¡Solo elige tu favorito!
Y si quieres una fuente en negrita, puedes probar /mathbf
plt.title(r''$/mathbf{W_y(/tau, j=3)}$'')
EDIT 2
Lo siguiente hará que la fuente en negrita sea la predeterminada para usted
font = {''family'' : ''monospace'',
''weight'' : ''bold'',
''size'' : 22}
rc(''font'', **font)