2012-03-09 22 views
20

estoy usando Python para simular algunos modelos de automatización, y con la ayuda de matplotlib estoy produciendo parcelas como el que se muestra a continuación.un mapa binario blanco y negro en matplotlib

enter image description here

Actualmente estoy trazando con el siguiente comando:

ax.imshow(self.g, cmap=map, interpolation='nearest') 

donde self.g es el mapa binario (0 -> azul, 1 -> rojo en mis parcelas actuales).

Sin embargo, incluir esto en mi informe me gustaría que la trama sea con puntos negros sobre fondo blanco en lugar de rojo en azul. ¿Cómo logro eso?

Respuesta

33

Puede cambiar el mapa de colores que está utilizando a través de la palabra clave cmap. El mapa de color 'Greys' proporciona el efecto que desea. Puede encontrar una lista de available maps on the scipy website.

import matplotlib.pyplot as plt 
import numpy as np 

np.random.seed(101) 
g = np.floor(np.random.random((100, 100)) + .5) 

plt.subplot(211) 
plt.imshow(g) 
plt.subplot(212) 
plt.imshow(g, cmap='Greys', interpolation='nearest') 
plt.savefig('blkwht.png') 

plt.show() 

que se traduce en:

enter image description here

+1

sólo puede dar el nombre del mapa de colores a 'cmap'. 'plt.imshow (g, cmap =" Grays ")' haría lo mismo. – Avaris

+0

@Avaris, gracias, He actualizado la respuesta para incluir esta ... – Yann

+0

puede también utilizar plt.gray() al principio para obtener resultados similares. – touchStone

8

Hay un método alternativo a la respuesta de Yann que proporciona un control más preciso. Matplotlib de imshow puede tomar una matriz MxNx3 donde cada entrada es el valor de color RGB - acaba de establecer a blanco o negro [1,1,1][0,0,0] en consecuencia. Si quieres tres colores, es fácil expandir este método.

import matplotlib.pyplot as plt 
import numpy as np 

# Z is your data set 
N = 100 
Z = np.random.random((N,N)) 

# G is a NxNx3 matrix 
G = np.zeros((N,N,3)) 

# Where we set the RGB for each pixel 
G[Z>0.5] = [1,1,1] 
G[Z<0.5] = [0,0,0] 

plt.imshow(G,interpolation='nearest') 
plt.show() 

enter image description here

Cuestiones relacionadas