Reducir el tamaño de fuente de las etiquetas de marca

3 minutos de lectura

Abre el avatar de usuario del camino.
abre el camino

En una figura de matplotlib, ¿cómo puedo hacer el tamaño de fuente para las etiquetas de marca usando ax1.set_xticklabels() ¿menor?

Además, ¿cómo se puede girar de horizontal a vertical?

  • Gracias por hacer esta pregunta, estoy tratando de resolver este problema ahora mismo. No soy muy obstinado aquí, pero parece que los votantes piensan que la mejor respuesta no es la aceptada. ¿Qué opinas?

    – Rusia debe sacar a Putin

    18 de junio de 2017 a las 19:25

  • ¿Leí correctamente que hay al menos 5 formas diferentes de cambiar el tamaño de fuente en matplotlib? 😀

    – famargar

    26 de febrero de 2018 a las 13:06

Avatar de usuario de Autiwa
autiwa

Hay una manera más simple en realidad. Acabo de encontrar:

import matplotlib.pyplot as plt
# We prepare the plot  
fig, ax = plt.subplots()

# We change the fontsize of minor ticks label 
ax.tick_params(axis="both", which="major", labelsize=10)
ax.tick_params(axis="both", which="minor", labelsize=8)

Esto solo responde al tamaño de label parte de su pregunta sin embargo.

  • Usar axis = 'x' o axis = 'y' modificar solo uno de los ejes

    – amado.por.Jesús

    28 de abril de 2020 a las 15:08

Para especificar el tamaño de fuente y la rotación al mismo tiempo, intente esto:

plt.xticks(fontsize=14, rotation=90)

avatar de usuario de mechanical_meat
carne_mecanica

Tenga en cuenta que las versiones más recientes de MPL tienen un acceso directo para esta tarea. Se muestra un ejemplo en la otra respuesta a esta pregunta: https://stackoverflow.com/a/11386056/42346

El siguiente código tiene fines ilustrativos y puede no estar necesariamente optimizado.

import matplotlib.pyplot as plt
import numpy as np

def xticklabels_example():
    fig = plt.figure() 

    x = np.arange(20)
    y1 = np.cos(x)
    y2 = (x**2)
    y3 = (x**3)
    yn = (y1,y2,y3)
    COLORS = ('b','g','k')

    for i,y in enumerate(yn):
        ax = fig.add_subplot(len(yn),1,i+1)

        ax.plot(x, y, ls="solid", color=COLORS[i]) 

        if i != len(yn) - 1:
            # all but last 
            ax.set_xticklabels( () )
        else:
            for tick in ax.xaxis.get_major_ticks():
                tick.label.set_fontsize(14) 
                # specify integer or one of preset strings, e.g.
                #tick.label.set_fontsize('x-small') 
                tick.label.set_rotation('vertical')

    fig.suptitle('Matplotlib xticklabels Example')
    plt.show()

if __name__ == '__main__':
    xticklabels_example()

ingrese la descripción de la imagen aquí

Avatar de usuario de Kyle Swanson
kyle swanson

otra alternativa

Tengo dos parcelas una al lado de la otra y me gustaría ajustar las etiquetas de marca por separado.

Las soluciones anteriores estaban cerca, sin embargo, no estaban funcionando para mí. Encontré mi solución de este matplotlib página.

ax.xaxis.set_tick_params(labelsize=20)

Esto funcionó y fue directo al grano. Para mi caso de uso, era la trama de la derecha la que necesitaba ser ajustada. Para el gráfico de la izquierda, ya que estaba creando nuevas etiquetas de marca, pude ajustar la fuente en el mismo proceso que colocaring las etiquetas.

es decir

ax1.set_xticklabels(ax1_x, fontsize=15)
ax1.set_yticklabels(ax1_y, fontsize=15)

así que usé para la trama correcta,

ax2.xaxis.set_tick_params(labelsize=24)
ax2.yaxis.set_tick_params(labelsize=24)

Una sutileza menor… Lo sé… pero espero que esto ayude a alguien 🙂

Puntos de bonificación si alguien sabe cómo ajustar el tamaño de fuente de la etiqueta de orden de magnitud.

ingrese la descripción de la imagen aquí

Alternativamente, puedes simplemente hacer:

import matplotlib as mpl
label_size = 8
mpl.rcParams['xtick.labelsize'] = label_size 

Avatar de usuario de Georgy
georgia

plt.tick_params(axis="both", which="minor", labelsize=12)

Avatar de usuario de Christoph
Cristóbal

En las versiones actuales de Matplotlib, puede hacer axis.set_xticklabels(labels, fontsize="small").

¿Ha sido útil esta solución?