Propiedades y diseño del texto #

Controlando las propiedades del texto y su diseño con Matplotlib.

matplotlib.text.Textlas 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

float

color de fondo

cualquier color matplotlib

bbox

Rectangleprop dict plus key 'pad'que es un pad en puntos

clip_box

una instancia de matplotlib.transform.Bbox

clip_en

bool

clip_path

una Pathinstancia y una Transforminstancia, unaPatch

color

cualquier color matplotlib

familia

[ 'serif'| 'sans-serif'| 'cursive'| 'fantasy'| 'monospace']

propiedades de la fuente

FontProperties

alineación horizontal o ha

[ 'center'| 'right'| 'left']

etiqueta

cualquier cadena

Espaciado entre líneas

float

multialineación

[ 'left'| 'right'| 'center']

nombre o nombre de fuente

cadena, por ejemplo, [ 'Sans'| 'Courier'| 'Helvetica'...]

recogedor

[Ninguno|flotante|bool|invocable]

posición

(x, y)

rotación

[ ángulo en grados | 'vertical'| 'horizontal']

tamaño o tamaño de letra

[ tamaño en puntos | tamaño relativo, por ejemplo, 'smaller', 'x-large']

estilo o estilo de fuente

[ 'normal'| 'italic'| 'oblique']

texto

cadena o cualquier cosa imprimible con la conversión '%s'

transformar

Transformsubclase

variante

[ 'normal'| 'small-caps']

alineación vertical o va

[ 'center'| 'top'| 'bottom'| 'baseline']

visible

bool

peso o peso de fuente

[ 'normal'| 'bold'| 'heavy'| 'light'| 'ultrabold'| 'ultralight']

X

float

y

float

orden Z

cualquier número

Puede diseñar texto con los argumentos de alineación horizontalalignment, verticalalignmenty multialignment. horizontalalignmentcontrola si el argumento posicional x para el texto indica el lado izquierdo, central o derecho del cuadro delimitador de texto. verticalalignmentcontrola 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.transAxesen 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()
accesorios de texto

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

'font.family'

Lista de familias de fuentes (instaladas en la máquina del usuario) y/o .{'cursive', 'fantasy', 'monospace', 'sans', 'sans serif', 'sans-serif', 'serif'}

'font.style'

El estilo predeterminado, por ejemplo 'normal', 'italic'.

'font.variant'

Variante predeterminada, ex 'normal', 'small-caps' (no probada)

'font.stretch'

Extensión predeterminada, ex 'normal', 'condensed' (incompleta)

'font.weight'

Peso predeterminado. O cadena o entero

'font.size'

Tamaño de fuente predeterminado en puntos. Los tamaños de fuente relativos ( 'large', 'x-small') se calculan contra este tamaño.

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

'serif'

'font.serif'

'monospace'

'font.monospace'

'fantasy'

'font.fantasy'

'cursive'

'font.cursive'

{'sans', 'sans serif', 'sans-serif'}

'font.sans-serif'

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 .matplotlibrcarchivo:

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.

Galería generada por Sphinx-Gallery