2012-04-11 23 views
8

Estoy graficando datos de una matriz numpy usando matplotlib imshow. Sin embargo, algunos puntos no tienen datos en ellos. Inicialicé la matriz usando np.zeroes, por lo que estos puntos arrastran todo el mapa. Sé que ninguno de los datos tendrá jamás un valor de 0.0. ¿Hay alguna forma de que le diga a la rutina imshow que ignore estos puntos (es decir, déjelos blancos para que quede claro que están vacíos)?Configuración de puntos sin datos en blanco con Matplotlib imshow

+0

Tienes dos buenas respuestas; considere seleccionar uno como correcto. Combiné las dos respuestas para lograr mi objetivo. Ambos fueron mucho más fáciles que definir un cmap. – physicsmichael

Respuesta

10

¿Ha intentado crear instancias de su matriz con NaN en lugar de ceros para ver si el valor predeterminado de matplotlib ignorará los NaN de una manera que le resulte útil? También puede probar simplemente utilizando la indexación lógica para hacer las ubicaciones de 0 igual a NaN justo antes de trazar:

my_data[my_data == 0.0] = numpy.nan 

Como alternativa, puede utilizar la idea Nan y follow this link's advice y utilizar NumPy enmascarado matrices con el fin de trazar las entradas NaN como color que prefieres

Creo que también podría usar la idea de ese enlace para crear una matriz enmascarada también en las ubicaciones cero, sin tener que ir a la opción NaN si no le gusta.

3

Rellene la matriz con Python Ninguno para los puntos que no deben mostrarse.

y_series_1 = [1,None,None,4,5] 
y_series_2 = [1,2,5,6,7] 

Para este ejemplo, la línea y_series_1 desaparecerá del eje X en el segundo y tercer punto. El resultado son los saltos de línea (la línea comienza, desaparece y luego continúa en el cuarto punto), que creo que es el comportamiento que buscas.

Cuestiones relacionadas