font matplotlib

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)