Cómo configurar xticks en subparcelas

1 minuto de lectura

avatar de usuario de user2926577
usuario2926577

Si trazo un solo imshow trama que puedo usar

fig, ax = plt.subplots()
ax.imshow(data)
plt.xticks( [4, 14, 24],  [5, 15, 25] )

para reemplazar mis etiquetas xtick.

Ahora, estoy trazando 12 imshow parcelas utilizando

f, axarr = plt.subplots(4, 3)
axarr[i, j].imshow(data)

¿Cómo puedo cambiar mis xticks solo por una de estas subparcelas? Solo puedo acceder a los ejes de las subparcelas con axarr[i, j]. como puedo acceder plt solo por una subtrama en particular?

Hay dos maneras:

  1. Use los métodos de ejes del objeto de la subparcela (por ejemplo, ax.set_xticks y ax.set_xticklabels) o
  2. Usar plt.sca para establecer los ejes actuales para la máquina de estado de pyplot (es decir, el plt interfaz).

Como ejemplo (esto también ilustra el uso de setp para cambiar las propiedades de todas las subparcelas):

import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=3, ncols=4)

# Set the ticks and ticklabels for all axes
plt.setp(axes, xticks=[0.1, 0.5, 0.9], xticklabels=['a', 'b', 'c'],
        yticks=[1, 2, 3])

# Use the pyplot interface to change just one subplot...
plt.sca(axes[1, 1])
plt.xticks(range(3), ['A', 'Big', 'Cat'], color="red")

fig.tight_layout()
plt.show()

ingrese la descripción de la imagen aquí

  • Qué versión estás usando? Me estoy poniendo AttributeError: Unknown property xtickslabels por plt.setp(ax, xtickslabels=xticks)

    – Federico Norte

    4 de abril de 2018 a las 14:56

Avatar de usuario de Archie
Archie

Ver el (bastante) reciente responder en el repositorio matplotlib, en el que se sugiere la siguiente solución:

  • Si desea configurar las xticklabels:

    ax.set_xticks([1,4,5]) 
    ax.set_xticklabels([1,4,5], fontsize=12)
    
  • Si solo desea aumentar el tamaño de fuente de las xticklabels, utilizando los valores y ubicaciones predeterminados (que es algo que personalmente necesito a menudo y encuentro muy útil):

    ax.tick_params(axis="x", labelsize=12) 
    
  • Para hacerlo todo a la vez:

    plt.setp(ax.get_xticklabels(), fontsize=12, fontweight="bold", 
             horizontalalignment="left")`
    

¿Ha sido útil esta solución?