matplotlib: cambiar las tags de garrapatas yaxis

Para cada etiqueta de tick en el eje y, me gustaría cambiar: label -> 2^label

Estoy trazando datos log-log (base 2), pero me gustaría que las tags muestren los valores de los datos originales.

Sé que puedo obtener las tags y actuales con ylabels = plt.getp(plt.gca(), 'yticklabels')

Esto me da una lista: una cada uno de los cuales es un

Miré la documentación de los objetos de texto en http://matplotlib.org/users/text_props.html pero todavía no estoy seguro de cuál es la syntax correcta para cambiar la cadena en cada etiqueta de texto.

Una vez que cambie las tags, podría establecerlas en el eje usando:

plt.setp(plt.gca(), 'yticklabels', ylabels)

Si desea hacer esto en un caso general, puede utilizar FuncFormatter (consulte: matplotlib axis label format , imshow: labels como cualquier función arbitraria de los índices de imagen . Matplotlib set_major_formatter AttributeError )

En tu caso lo siguiente debería funcionar:

 import matplotlib as mpl import matplotlib.pyplot as plt def mjrFormatter(x, pos): return "$2^{{{0}}}$".format(x) def mjrFormatter_no_TeX(x, pos): return "2^{0}".format(x) ax = plt.gca() ax.yaxis.set_major_formatter(mpl.ticker.FuncFormatter(mjrFormatter)) plt.draw() 

El escape absurdo {} es una consecuencia de la cadena de estilo nuevo frommating

Según http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.set_yticks

a = plt.gca()
a. set_yticks(list_of_labels)