Es imprescindible comprender el código de forma correcta antes de utilizarlo a tu proyecto si ttienes algo que aportar puedes dejarlo en la sección de comentarios.
Solución:
Llamo a la dispersión dentro de un bucle y quiero que cada gráfico tenga un color diferente.
Basado en eso, y en su respuesta: me parece que realmente quiere n
distinto colores para sus conjuntos de datos; desea mapear los índices enteros 0, 1, ..., n-1
a distintos colores RGB. Algo como:
Aquí está la función para hacerlo:
import matplotlib.pyplot as plt
def get_cmap(n, name='hsv'):
'''Returns a function that maps each index in 0, 1, ..., n-1 to a distinct
RGB color; the keyword argument name must be a standard mpl colormap name.'''
return plt.cm.get_cmap(name, n)
uso en su seudo-fragmento de código en la pregunta:
cmap = get_cmap(len(data))
for i, (X, Y) in enumerate(data):
scatter(X, Y, c=cmap(i))
Generé la figura en mi respuesta con el siguiente código:
import matplotlib.pyplot as plt
def get_cmap(n, name='hsv'):
'''Returns a function that maps each index in 0, 1, ..., n-1 to a distinct
RGB color; the keyword argument name must be a standard mpl colormap name.'''
return plt.cm.get_cmap(name, n)
def main():
N = 30
fig=plt.figure()
ax=fig.add_subplot(111)
plt.axis('scaled')
ax.set_xlim([ 0, N])
ax.set_ylim([-0.5, 0.5])
cmap = get_cmap(N)
for i in range(N):
rect = plt.Rectangle((i, -0.5), 1, 1, facecolor=cmap(i))
ax.add_artist(rect)
ax.set_yticks([])
plt.show()
if __name__=='__main__':
main()
Probado con Python 2.7 y matplotlib 1.5, y con Python 3.5 y matplotlib 2.0. Funciona como se esperaba.
for X,Y in data:
scatter(X, Y, c=numpy.random.rand(3,))
elaborando la respuesta de @john-mee, si tiene datos arbitrariamente largos pero no necesita colores estrictamente únicos:
para pitón 2:
from itertools import cycle
cycol = cycle('bgrcmk')
for X,Y in data:
scatter(X, Y, c=cycol.next())
para pitón 3:
from itertools import cycle
cycol = cycle('bgrcmk')
for X,Y in data:
scatter(X, Y, c=next(cycol))
esto tiene la ventaja de que los colores son fáciles de controlar y que es corto.
Si te gustó nuestro trabajo, tienes la opción de dejar un post acerca de qué te ha parecido este post.