Advertencia: a menos que las etiquetas ya estén configuradas en una cadena (como suele ser el caso, por ejemplo, en un diagrama de caja), esto no funcionará con ninguna versión de matplotlib más nueva que 1.1.0
. Si está trabajando desde el maestro github actual, esto no funcionará. Todavía no estoy seguro de cuál es el problema ... Puede ser un cambio no deseado, o puede no ser ...
Normalmente, harías algo en este sentido:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
# We need to draw the canvas, otherwise the labels won't be positioned and
# won't have values yet.
fig.canvas.draw()
labels = [item.get_text() for item in ax.get_xticklabels()]
labels[1] = 'Testing'
ax.set_xticklabels(labels)
plt.show()

Para comprender la razón por la que necesita pasar por tantos aros, necesita comprender un poco más sobre cómo está estructurado matplotlib.
Matplotlib evita deliberadamente realizar el posicionamiento "estático" de las garrapatas, etc., a menos que se indique explícitamente. La suposición es que querrá interactuar con la trama, por lo que los límites de la trama, las marcas, las marcas de verificación, etc. cambiarán dinámicamente.
Por lo tanto, no puede simplemente establecer el texto de una etiqueta de marca dada. De forma predeterminada, el Localizador y Formateador del eje lo restablece cada vez que se dibuja el gráfico.
Sin embargo, si los localizadores y formateadores están configurados para ser estáticos ( FixedLocator
y FixedFormatter
, respectivamente), las etiquetas de marca permanecen igual.
Esto es lo que set_*ticklabels
o ax.*axis.set_ticklabels
hace.
Esperemos que eso aclare un poco más por qué cambiar una etiqueta de marca individual es un poco complicado.
A menudo, lo que realmente quieres hacer es anotar una determinada posición. En ese caso, busca en su annotate
lugar.
draw()
antes de intentar imprimir las etiquetas, obtendrá lo que espera. Desafortunadamente, establecer etiquetas de marca individuales es un poco más difícil (lo que sucede es que el localizador y formateador de marca no se ha reiniciado y anula las cosas cuando ustedset_text
). Agregaré un ejemplo en un momento, si alguien no me gana. Sin embargo, tengo que tomar el autobús en este momento.