Aquí hay un ejemplo
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand(100)
y = np.random.rand(100)
t = np.arange(100)
plt.scatter(x, y, c=t)
plt.show()
Aquí está configurando el color según el índice t
, que es solo una matriz de [1, 2, ..., 100]
.
Quizás un ejemplo más fácil de entender es el ligeramente más simple
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(100)
y = x
t = x
plt.scatter(x, y, c=t)
plt.show()
Tenga en cuenta que la matriz que pasa como c
no necesita tener ningún orden o tipo en particular, es decir, no necesita ser ordenada o enteros como en estos ejemplos. La rutina de trazado escalará el mapa de colores de modo que los valores mínimo / máximo en c
correspondan a la parte inferior / superior del mapa de colores.
Mapas de colores
Puede cambiar el mapa de colores agregando
import matplotlib.cm as cm
plt.scatter(x, y, c=t, cmap=cm.cmap_name)
La importación matplotlib.cm
es opcional, ya que también puede llamar a mapas de colores cmap="cmap_name"
. Hay una página de referencia de mapas de colores que muestra el aspecto de cada uno. También sepa que puede invertir un mapa de colores simplemente llamándolo como cmap_name_r
. Entonces tampoco
plt.scatter(x, y, c=t, cmap=cm.cmap_name_r)
plt.scatter(x, y, c=t, cmap="cmap_name_r")
trabajará. Los ejemplos son "jet_r"
o cm.plasma_r
. Aquí hay un ejemplo con el nuevo viridis de mapa de colores 1.5:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(100)
y = x
t = x
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.scatter(x, y, c=t, cmap='viridis')
ax2.scatter(x, y, c=t, cmap='viridis_r')
plt.show()
Barras de colores
Puede agregar una barra de colores usando
plt.scatter(x, y, c=t, cmap='viridis')
plt.colorbar()
plt.show()
Tenga en cuenta que si está utilizando figuras y subtramas explícitamente (por ejemplo, fig, ax = plt.subplots()
o ax = fig.add_subplot(111)
), agregar una barra de colores puede ser un poco más complicado. Se pueden encontrar buenos ejemplos aquí para una sola barra de color de subparcela y aquí para 2 subtramas 1 barra de color .
plt.colorbar()
comando.cm.colormap_name
ycm.cmapname
no de variables reales enmatplotlib.cm
; es solo un pseudocódigo paracm.jet
ocm.veridis_r
, etc.cmap
o lac
lista de una curva ya trazada?Para agregar a la respuesta de wflynny anterior, puede encontrar los mapas de colores disponibles aquí
Ejemplo:
import matplotlib.cm as cm plt.scatter(x, y, c=t, cmap=cm.jet)
o alternativamente,
plt.scatter(x, y, c=t, cmap='jet')
fuente
Barra de color de la subtrama
Para las subtramas con dispersión, puede engañar una barra de colores en sus ejes construyendo el "mapeable" con la ayuda de una figura secundaria y luego agregándolo a su trama original.
Como continuación del ejemplo anterior:
import numpy as np import matplotlib.pyplot as plt x = np.arange(10) y = x t = x fig, (ax1, ax2) = plt.subplots(1, 2) ax1.scatter(x, y, c=t, cmap='viridis') ax2.scatter(x, y, c=t, cmap='viridis_r') # Build your secondary mirror axes: fig2, (ax3, ax4) = plt.subplots(1, 2) # Build maps that parallel the color-coded data # NOTE 1: imshow requires a 2-D array as input # NOTE 2: You must use the same cmap tag as above for it match map1 = ax3.imshow(np.stack([t, t]),cmap='viridis') map2 = ax4.imshow(np.stack([t, t]),cmap='viridis_r') # Add your maps onto your original figure/axes fig.colorbar(map1, ax=ax1) fig.colorbar(map2, ax=ax2) plt.show()
Tenga en cuenta que también generará una figura secundaria que puede ignorar.
fuente