Python/Matplotlib - Rango de barra de color y valores de visualización
-
26-10-2019 - |
Pregunta
Al usar matplotlib con una trama de contorno, tengo problemas para que la barra de color se muestre como quiera. He leído numerosos ejemplos similares, pero aún no he podido obtener lo que quiero.
En la imagen a continuación, quiero que dos cosas cambiaran. Quiero que el valor mínimo y los valores máximos se muestren en la barra de color (el máximo debe ser 2.0 y el min -0.1). Estos dos valores deben estar en el borde de la barra de color. Además, quiero que la barra de color muestre el valor en cada transición de color. Por ejemplo. En el diagrama a continuación, entre 2.1 y 1.8, hay otra transición de color donde no se muestra el valor.
¿Alguien puede ayudarme por favor? Creo que es posible que necesite usar la norma, pero hasta ahora no ha funcionado para mí.
Gracias,
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()
Solución
Si entiendo correctamente lo que quieres, 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()