Matplotlib lo hace de forma predeterminada.
Ej:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
plt.plot(x, x)
plt.plot(x, 2 * x)
plt.plot(x, 3 * x)
plt.plot(x, 4 * x)
plt.show()
Y, como usted ya sabe, usted puede agregar fácilmente una leyenda:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
plt.plot(x, x)
plt.plot(x, 2 * x)
plt.plot(x, 3 * x)
plt.plot(x, 4 * x)
plt.legend(['y = x', 'y = 2x', 'y = 3x', 'y = 4x'], loc='upper left')
plt.show()
Si desea controlar los colores que se reciclarán:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
plt.gca().set_color_cycle(['red', 'green', 'blue', 'yellow'])
plt.plot(x, x)
plt.plot(x, 2 * x)
plt.plot(x, 3 * x)
plt.plot(x, 4 * x)
plt.legend(['y = x', 'y = 2x', 'y = 3x', 'y = 4x'], loc='upper left')
plt.show()
Espero que ayude un poco! Si no está familiarizado con matplotlib, the tutorial is a good place to start.
Editar:
En primer lugar, si usted tiene una gran cantidad (> 5) de las cosas que desea trazar en una figura, ya sea:
- los ponen en diferentes parcelas (considerar el uso algunas subtramas en una figura), o
- Use algo diferente al color (es decir, estilos de marcador o grosor de línea) para distinguirlos.
De lo contrario, va a terminar con un muy complot desordenado! Sé amable con quien alguna vez va a leer lo que sea que estés haciendo y no intentes meter 15 cosas diferentes en una figura.
Más allá de eso, muchas personas son daltónicas en diversos grados, y distinguir entre numerosos colores sutilmente diferentes es difícil para más personas de lo que se puede imaginar.
Que habiendo sido dicho, si realmente quiere poner 20 líneas en un eje con 20 colores relativamente distintos, aquí hay una manera de hacerlo:
import matplotlib.pyplot as plt
import numpy as np
num_plots = 20
# Have a look at the colormaps here and decide which one you'd like:
# http://matplotlib.org/1.2.1/examples/pylab_examples/show_colormaps.html
colormap = plt.cm.gist_ncar
plt.gca().set_color_cycle([colormap(i) for i in np.linspace(0, 0.9, num_plots)])
# Plot several different functions...
x = np.arange(10)
labels = []
for i in range(1, num_plots + 1):
plt.plot(x, i * x + 5 * i)
labels.append(r'$y = %ix + %i$' % (i, 5*i))
# I'm basically just demonstrating several different legend options here...
plt.legend(labels, ncol=4, loc='upper center',
bbox_to_anchor=[0.5, 1.1],
columnspacing=1.0, labelspacing=0.0,
handletextpad=0.0, handlelength=1.5,
fancybox=True, shadow=True)
plt.show()
Nota para el último ejemplo, en las versiones más recientes de matplotlib, el 'set_color_cycle' ha quedado obsoleto, por lo que esa línea debe ser' plt.gca(). set_prop_cycle (plt.cycler ('color', plt.cm.jet (np.linspace (0, 1, num_plots)))) ' y simplemente cambie 'plt.cm.YOUR_PREFERED_COLOR_MAP' para satisfacer sus necesidades. – Nate
@JoeKington: La explicación fue maravillosa, muchas gracias – Breeze