2011-04-29 28 views
25

Al usar matplotlib con una gráfica de contorno, tengo problemas para mostrar la barra de color como quiero. He leído numerosos ejemplos similares, pero aún no he podido obtener lo que quiero.Python/Matplotlib - Rango de la barra de color y valores de pantalla

En la imagen siguiente, deseo que se cambien dos cosas. Quiero que se muestren el valor mínimo y los valores máximos en la barra de colores (el máximo debe ser 2.0 y el mínimo -0.1). Estos dos valores deberían estar en el borde de la barra de colores. Además, quiero que la barra de colores muestre el valor en cada transición de color. Por ejemplo. en el siguiente diagrama, entre 2.1 y 1.8, hay otra transición de color donde el valor no se muestra.

¿Alguien puede ayudarme? Creo que necesitaré usar la norma, pero hasta ahora no me ha funcionado.

Gracias,

enter image description here

Código:

import numpy as np 
import matplotlib.pyplot as plt 

xi = np.array([0., 0.5, 1.0]) 
yi = np.array([0., 0.5, 1.0]) 
zi = np.array([[0., 1.0, 2.0], 
       [0., 1.0, 2.0], 
       [-0.1, 1.0, 2.0]]) 

plt.contour(xi, yi, zi, 15, linewidths=0.5, colors='k') 
plt.contourf(xi, yi, zi, 15, cmap=plt.cm.jet) 
plt.colorbar() 
plt.show() 

Respuesta

27

Si he entendido bien lo que quiere, creo que esto debería hacerlo:

import numpy as np 
import matplotlib.pyplot as plt 

xi = np.array([0., 0.5, 1.0]) 
yi = np.array([0., 0.5, 1.0]) 
zi = np.array([[0., 1.0, 2.0], 
       [0., 1.0, 2.0], 
       [-0.1, 1.0, 2.0]]) 

v = np.linspace(-.1, 2.0, 15, endpoint=True) 
plt.contour(xi, yi, zi, v, linewidths=0.5, colors='k') 
plt.contourf(xi, yi, zi, v, cmap=plt.cm.jet) 
x = plt.colorbar(ticks=v) 
print x 
plt.show() 

enter image description here

+0

¡Exactamente lo que quería, gracias! –

Cuestiones relacionadas