Nota
Haga clic aquí para descargar el código de ejemplo completo
Propiedades y diseño del texto #
Controlando las propiedades del texto y su diseño con Matplotlib.
matplotlib.text.Text
las instancias tienen una variedad de propiedades que se pueden configurar a través de argumentos de palabras clave para set_title
, set_xlabel
,
text
, etc.
Propiedad |
Tipo de valor |
---|---|
alfa |
|
color de fondo |
cualquier color matplotlib |
bbox |
|
clip_box |
una instancia de matplotlib.transform.Bbox |
clip_en |
bool |
clip_path |
|
color |
cualquier color matplotlib |
familia |
[ |
propiedades de la fuente |
|
alineación horizontal o ha |
[ |
etiqueta |
cualquier cadena |
Espaciado entre líneas |
|
multialineación |
[ |
nombre o nombre de fuente |
cadena, por ejemplo, [ |
recogedor |
[Ninguno|flotante|bool|invocable] |
posición |
(x, y) |
rotación |
[ ángulo en grados | |
tamaño o tamaño de letra |
[ tamaño en puntos | tamaño relativo, por ejemplo, |
estilo o estilo de fuente |
[ |
texto |
cadena o cualquier cosa imprimible con la conversión '%s' |
transformar |
|
variante |
[ |
alineación vertical o va |
[ |
visible |
bool |
peso o peso de fuente |
[ |
X |
|
y |
|
orden Z |
cualquier número |
Puede diseñar texto con los argumentos de alineación
horizontalalignment
, verticalalignment
y
multialignment
. horizontalalignment
controla si el argumento posicional x para el texto indica el lado izquierdo, central o derecho del cuadro delimitador de texto. verticalalignment
controla si el argumento posicional y para el texto indica la parte inferior, central o superior del cuadro delimitador de texto. multialignment
, solo para cadenas separadas por nueva línea, controla si las diferentes líneas están justificadas a la izquierda, al centro o a la derecha. Aquí hay un ejemplo que usa el
text()
comando para mostrar las diversas posibilidades de alineación. El uso de transform=ax.transAxes
en todo el código indica que las coordenadas se dan en relación con el cuadro delimitador de los ejes, siendo (0, 0) la parte inferior izquierda de los ejes y (1, 1) la parte superior derecha.
import matplotlib.pyplot as plt
import matplotlib.patches as patches
# build a rectangle in axes coords
left, width = .25, .5
bottom, height = .25, .5
right = left + width
top = bottom + height
fig = plt.figure()
ax = fig.add_axes([0, 0, 1, 1])
# axes coordinates: (0, 0) is bottom left and (1, 1) is upper right
p = patches.Rectangle(
(left, bottom), width, height,
fill=False, transform=ax.transAxes, clip_on=False
)
ax.add_patch(p)
ax.text(left, bottom, 'left top',
horizontalalignment='left',
verticalalignment='top',
transform=ax.transAxes)
ax.text(left, bottom, 'left bottom',
horizontalalignment='left',
verticalalignment='bottom',
transform=ax.transAxes)
ax.text(right, top, 'right bottom',
horizontalalignment='right',
verticalalignment='bottom',
transform=ax.transAxes)
ax.text(right, top, 'right top',
horizontalalignment='right',
verticalalignment='top',
transform=ax.transAxes)
ax.text(right, bottom, 'center top',
horizontalalignment='center',
verticalalignment='top',
transform=ax.transAxes)
ax.text(left, 0.5*(bottom+top), 'right center',
horizontalalignment='right',
verticalalignment='center',
rotation='vertical',
transform=ax.transAxes)
ax.text(left, 0.5*(bottom+top), 'left center',
horizontalalignment='left',
verticalalignment='center',
rotation='vertical',
transform=ax.transAxes)
ax.text(0.5*(left+right), 0.5*(bottom+top), 'middle',
horizontalalignment='center',
verticalalignment='center',
fontsize=20, color='red',
transform=ax.transAxes)
ax.text(right, 0.5*(bottom+top), 'centered',
horizontalalignment='center',
verticalalignment='center',
rotation='vertical',
transform=ax.transAxes)
ax.text(left, top, 'rotated\nwith newlines',
horizontalalignment='center',
verticalalignment='center',
rotation=45,
transform=ax.transAxes)
ax.set_axis_off()
plt.show()
Número de fuente predeterminado
La fuente predeterminada base está controlada por un conjunto de rcParams. Para establecer la fuente de las expresiones matemáticas, utilice rcParams que comiencen por mathtext
(consulte mathtext ).
rcParam |
uso |
---|---|
|
Lista de familias de fuentes (instaladas en la máquina del usuario) y/o . |
|
El estilo predeterminado, por ejemplo |
|
Variante predeterminada, ex |
|
Extensión predeterminada, ex |
|
Peso predeterminado. O cadena o entero |
|
Tamaño de fuente predeterminado en puntos. Los tamaños de fuente relativos ( |
Matplotlib puede usar familias de fuentes instaladas en la computadora del usuario, es decir, Helvetica, Times, etc. Las familias de fuentes también se pueden especificar con alias de familias genéricas como ( ).{'cursive', 'fantasy', 'monospace',
'sans', 'sans serif', 'sans-serif', 'serif'}
Nota
Para acceder a la lista completa de fuentes disponibles:
matplotlib.font_manager.get_font_names()
La asignación entre los alias de familias genéricas y las familias de fuentes reales (mencionadas en los rcParams predeterminados ) está controlada por los siguientes rcParams:
Alias de familia genérica basado en CSS |
rcParam con asignaciones |
---|---|
|
|
|
|
|
|
|
|
|
|
Si alguno de los nombres de familia genéricos aparece en 'font.family'
, reemplazamos esa entrada por todas las entradas en el mapeo rcParam correspondiente. Por ejemplo:
matplotlib.rcParams['font.family'] = ['Family1', 'serif', 'Family2']
matplotlib.rcParams['font.serif'] = ['SerifFamily1', 'SerifFamily2']
# This is effectively translated to:
matplotlib.rcParams['font.family'] = ['Family1', 'SerifFamily1', 'SerifFamily2', 'Family2']
Texto con glifos no latinos #
A partir de la versión 2.0, la fuente predeterminada , DejaVu, contiene glifos para muchos alfabetos occidentales, pero no para otras escrituras, como el chino, el coreano o el japonés.
Para configurar la fuente predeterminada para que admita los puntos de código que necesita, anteponga el nombre de la fuente a 'font.family'
(recomendado) o a las listas de alias deseadas.
# first method
matplotlib.rcParams['font.family'] = ['Source Han Sans TW', 'sans-serif']
# second method
matplotlib.rcParams['font.family'] = ['sans-serif']
matplotlib.rcParams['sans-serif'] = ['Source Han Sans TW', ...]
Las listas de alias de familias genéricas contienen fuentes que se envían junto con Matplotlib (por lo que tienen un 100 % de posibilidades de ser encontradas) o fuentes que tienen una probabilidad muy alta de estar presentes en la mayoría de los sistemas.
Una buena práctica al configurar familias de fuentes personalizadas es agregar una familia genérica a la lista de familias de fuentes como último recurso.
También puede configurarlo en su .matplotlibrc
archivo:
font.family: Source Han Sans TW, Arial, sans-serif
Para controlar la fuente utilizada por artista, utilice los argumentos de palabra clave name , fontname o fontproperties documentados anteriormente .
En Linux, fc-list puede ser una herramienta útil para descubrir el nombre de la fuente; por ejemplo
$ fc-list :lang=zh family
Noto to Sans Mono CJK TC,Noto Sans Mono CJK TC Bold
Noto Sans CJK TC,Noto Sans CJK TC Medium
Noto Sans CJK TC,Noto Sans CJK TC DemiLight
Noto Sans CJK KR,Noto Sans CJK KR Black
Noto Sans CJK TC,Noto Sans CJK TC Black
Noto Sans Mono CJK TC,Noto Sans Mono CJK TC Regular
Noto Sans CJK SC,Noto Sans CJK SC Light
enumera todas las fuentes compatibles con el chino.