2010-09-15 11 views
8

He creado un gráfico de imagen con ax = imshow(). ax es un objeto AxesImage, pero parece que no puedo encontrar la función o atributo que necesito para poder personalizar las etiquetas de tic. El ordinary pyplots parece tener los métodos set_ticks y set_ticklabels, pero estos no parecen estar disponibles para la clase AxesImage. ¿Algunas ideas? Gracias ~personalizar los tics para AxesImage?

Respuesta

8

Por lo que vale la pena, estás malentendido poco lo que imshow() devoluciones, y cómo ejes matplotlib están estructurados en general ...

AxesImage Un objeto es responsable de la imagen visualizada (por ejemplo, mapas de color, datos, etc.), pero no el eje en el que reside la imagen. No tiene control sobre elementos como marcas y etiquetas.

Lo que desea utilizar es la instancia del eje actual.

Puede acceder a esto con gca(), si está utilizando la interfaz pylab, o matplotlib.pyplot.gca si está accediendo a cosas a través de pyplot. Sin embargo, si está utilizando cualquiera de ellos, existe una función xticks() para obtener/configurar las etiquetas y ubicaciones xtick.

Por ejemplo (usando pylab):

import pylab 
pylab.figure() 
pylab.plot(range(10)) 
pylab.xticks([2,3,4], ['a','b','c']) 
pylab.show() 

El uso de un enfoque más orientado a objetos (en una nota al azar, captadores y definidores de matplotlib ser molesto rápidamente ...):

import matplotlib.pyplot as plt 
import numpy as np 
fig = plt.figure() 
ax = fig.add_subplot(1,1,1) # Or we could call plt.gca() later... 
im = ax.imshow(np.random.random((10,10))) 
ax.set_xticklabels(['a','b','c','d']) # Or we could use plt.xticks(...) 

Espero que aclare un poco las cosas!

+0

¡Sí! Gracias. Esperaba que fuera algo similar a Matlab donde imagen() devuelve el mango de los ejes. El nombre del objeto es un poco engañoso también ... ¡Lo noté sobre el getter/setter también! En matlab a menudo paso los argumentos a los establecedores de ejes usando la notación 'cellarray {:}' que sería como la sintaxis '* args' y' ** kwargs' de python, pero en este caso no es tan sencillo (aunque yo estoy seguro de que hay formas de evitarlo). – hatmatrix

Cuestiones relacionadas