Cambiar color de los puntos en Matplotlib-PYTHON 3.6

publicado por: Anonymous

Tengo este ejemplo de código que genera una gráfica de puntos en python.

import numpy as np
import matplotlib.pyplot as plt
n = 5000
x = np.random.randn(n)
y = np.random.randn(n)
plt.figure(figsize=(10,7))
plt.plot(x,y,'o',markersize=2)
plt.show()

introducir la descripción de la imagen aquí

Hay alguna forma de colorear cada uno de estos puntos en función de un tercer parámetro?? Por ejemplo:

  • variable = 0 Color verde
  • variable = 1 Color naranja
  • variable = 2 Color rojo

solución

Mediante plt.scatter() puedes especificar una secuencia de colores, que se usará para pintar cada uno de los puntos, que debes pasarle a través del parámetro c.

Si la “variable” adicional asociada a cada punto la tienes en otro vector numpy, por ejemplo:

 v = np.random.randint(0, 3, size=n)

entonces puedes crea una lista python con los tres colores deseados:

colores = ["#00cc44",  # Verde
           "#ff7700",  # Naranja
           "#ff0000"   # Rojo
          ]

y usar los elementos de v (que son enteros entre 0 y 2, ambos inclusive) como índices dentro de la lista de colores. Por ejemplo, np.take(colores, v) generaría una lista con el color asociado a cada uno de los puntos.

Entonces:

import numpy as np
import matplotlib.pyplot as plt

n = 5000
x = np.random.randn(n)
y = np.random.randn(n)
v = np.random.randint(0, 3, size=n)
colores = ["#00cc44",  # Verde
           "#ff7700",  # Naranja
           "#ff0000"   # Rojo
          ]

plt.figure(figsize=(10,7))
plt.scatter(x, y, s=30, c=np.take(colores, v))
plt.show()

Resultado

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *