Supongamos que tengo tres conjuntos de datos:
X = [1,2,3,4]
Y1 = [4,8,12,16]
Y2 = [1,4,9,16]
Puedo dispersar esto:
from matplotlib import pyplot as plt
plt.scatter(X,Y1,color='red')
plt.scatter(X,Y2,color='blue')
plt.show()
¿Cómo puedo hacer esto con 10 juegos?
Busqué esto y pude encontrar alguna referencia a lo que estoy preguntando.
Editar: aclarando (con suerte) mi pregunta
Si llamo a dispersión varias veces, solo puedo establecer el mismo color en cada dispersión. Además, sé que puedo configurar una matriz de colores manualmente, pero estoy seguro de que hay una mejor manera de hacerlo. Mi pregunta es, entonces, "¿Cómo puedo dispersar automáticamente mis diversos conjuntos de datos, cada uno con un color diferente?
Si eso ayuda, puedo asignar fácilmente un número único a cada conjunto de datos.
python
matplotlib
scatter-plot
Yotam
fuente
fuente
Respuestas:
No sé a qué te refieres con "manualmente". Puede elegir un mapa de colores y hacer una matriz de colores con bastante facilidad:
O puede hacer su propio ciclador de color usando
itertools.cycle
y especificando los colores que desea recorrer, usandonext
para obtener el que desea. Por ejemplo, con 3 colores:Ahora que lo pienso, tal vez sea más limpio no usar
zip
con el primero tampoco:fuente
plt.legend(['c{}'.format(i) for i in range(len(ys))], loc=2, bbox_to_anchor=(1.05, 1), borderaxespad=0., fontsize=11)
al fondo lo anterior me da una leyenda con colores.La forma normal de trazar trazados con puntos en diferentes colores en matplotlib es pasar una lista de colores como parámetro.
P.ej:
Cuando tienes una lista de listas y quieres que estén coloreadas por lista. Creo que la forma más elegante es la sugerida por @DSM, solo haz un bucle haciendo múltiples llamadas para dispersar.
Pero si por alguna razón desea hacerlo con solo una llamada, puede hacer una gran lista de colores, con una comprensión de la lista y un poco de división del piso:
fuente
Una solución fácil
Si solo tiene un tipo de colecciones (por ejemplo, dispersión sin barras de error), también puede cambiar los colores después de haberlos trazado, esto a veces es más fácil de realizar.
El único código que necesitas:
La salida le ofrece diferentes colores incluso cuando tiene muchos diagramas de dispersión diferentes en la misma subtrama.
fuente
Siempre puedes usar la
plot()
función así:fuente
Esta pregunta es un poco complicada antes de enero de 2013 y matplotlib 1.3.1 (agosto de 2013), que es la versión estable más antigua que puedes encontrar en el sitio web de matpplotlib. Pero después de eso es bastante trivial.
Porque la versión actual de
matplotlib.pylab.scatter
asignación soporte: matriz de cadena de nombre de color, matriz de número flotante con mapa de color, matriz de RGB o RGBA.Esta respuesta está dedicada a la pasión infinita de @ Oxinabox por corregir la versión 2013 de mí mismo en 2015.
Tiene dos opciones para usar el comando de dispersión con múltiples colores en una sola llamada.
como
pylab.scatter
soporte de comandos, use la matriz RGBA para hacer el color que desee;A principios de 2013, no hay forma de hacerlo, ya que el comando solo admite un solo color para toda la colección de puntos de dispersión. Cuando estaba haciendo mi proyecto de 10000 líneas, descubrí una solución general para evitarlo. es muy pegajoso, pero puedo hacerlo en cualquier forma, color, tamaño y transparencia. Este truco también podría aplicarse a la colección de trazado de dibujo, colección de líneas ...
el código también está inspirado en el código fuente de
pyplot.scatter
, acabo de duplicar lo que hace la dispersión sin activarlo para dibujar.el comando
pyplot.scatter
devuelve unPatchCollection
Object, en el archivo "matplotlib / collections.py", una variable privada_facecolors
enCollection
clase y un métodoset_facecolors
.así que cada vez que tenga puntos de dispersión para dibujar, puede hacer esto:
fuente
Esto funciona para mi:
para cada serie, use un generador de color rgb aleatorio
fuente
plt.scatter(your values to the graph, color= (np.random.random_sample(), np.random.random_sample(), np.random.random_sample()) )
. Usted mencionó un generador RGB y declaró una lista RGB, los generadores se declaran entre '()'Una solución MUCHO más rápida para un gran conjunto de datos y un número limitado de colores es el uso de Pandas y la función groupby:
fuente