Tengo el siguiente código:
import matplotlib.pyplot as plt
cdict = {
'red' : ( (0.0, 0.25, .25), (0.02, .59, .59), (1., 1., 1.)),
'green': ( (0.0, 0.0, 0.0), (0.02, .45, .45), (1., .97, .97)),
'blue' : ( (0.0, 1.0, 1.0), (0.02, .75, .75), (1., 0.45, 0.45))
}
cm = m.colors.LinearSegmentedColormap('my_colormap', cdict, 1024)
plt.clf()
plt.pcolor(X, Y, v, cmap=cm)
plt.loglog()
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.colorbar()
plt.show()
Entonces esto produce un gráfico de los valores 'v' en los ejes X vs Y, usando el mapa de colores especificado. Los ejes X e Y son perfectos, pero el mapa de colores se extiende entre el mínimo y el máximo de v. Me gustaría forzar que el mapa de colores oscile entre 0 y 1.
Pensé en usar:
plt.axis(...)
Para establecer los rangos de los ejes, pero esto solo toma argumentos para el mínimo y máximo de X e Y, no el mapa de colores.
Editar:
Para mayor claridad, digamos que tengo un gráfico cuyos valores varían (0 ... 0.3) y otro gráfico cuyos valores (0.2 ... 0.8).
En ambos gráficos, querré que el rango de la barra de colores sea (0 ... 1). En ambos gráficos, quiero que este rango de color sea idéntico usando el rango completo de cdict arriba (por lo que 0.25 en ambos gráficos será del mismo color). En el primer gráfico, todos los colores entre 0.3 y 1.0 no aparecerán en el gráfico, pero sí en la tecla de barra de colores al costado. En el otro, todos los colores entre 0 y 0.2, y entre 0.8 y 1 no aparecerán en el gráfico, pero sí en la barra de colores al costado.
Use la función CLIM (equivalente a la función CAXIS en MATLAB):
fuente
No estoy seguro de si esta es la solución más elegante (esto es lo que usé), pero podría escalar sus datos al rango entre 0 y 1 y luego modificar la barra de colores:
Con los dos límites diferentes puede controlar el rango y la leyenda de la barra de colores. En este ejemplo, solo se muestra el rango entre -0.5 a 1.5 en la barra, mientras que el mapa de colores cubre de -2 a 2 (por lo que este podría ser su rango de datos, que registra antes de la escala).
Entonces, en lugar de escalar el mapa de colores, escala sus datos y ajusta la barra de colores a eso.
fuente
Usando entorno figura y .set_clim ()
Esta alternativa podría ser más fácil y segura si tiene varias parcelas:
Una sola barra de colores
La mejor alternativa es usar una sola barra de color para toda la trama. Hay diferentes formas de hacerlo, este tutorial es muy útil para comprender la mejor opción. Prefiero esta solución que simplemente puede copiar y pegar en lugar de la parte anterior de la barra de colores de visualización del código.
PD
Sugeriría usar en
pcolormesh
lugar depcolor
porque es más rápido (más información aquí ).fuente