Ci sono molti modi in cui potreste potenzialmente farlo. Probabilmente il più semplice e più ovvia sarebbe quella di specificare i colori linea separata per tutte le 20 linee:
line_colors = ['r', 'g', 'b', 'c', 'm', 'y', 'k', ...]
for ii in range(20):
plt.plot(x, y, c=line_colors[ii])
Naturalmente sarebbe un po 'un dolore di dover digitare le 20 diverse stringhe di colore!
Si potrebbe anche generare i colori disegnando un array di valori RGBA da una mappa dei colori come in risposta di unutbu, ma la maggior parte del built-in mappe di colore rosso contengono, in modo che ci sia bisogno di scegliere una mappa di colori che non lo fa contiene rosso, design your own, oppure scegli un intervallo di valori float tra 0 e 1 che non è stato mappato sulla regione rossa della mappa di colori.
Se non ti dispiace alcuni colori di essere ripetuti, un'opzione potenzialmente più bello sarebbe quella di utilizzare itertools.cycle
per creare un oggetto generatore che produce colori in un ciclo ripetitivo:
from itertools import cycle
color_cycle = cycle(['g', 'b', 'c', 'm', 'y', 'k'])
for ii in range(20):
if ii == 0:
plt.plot(x, y, c='r')
else:
plt.plot(x, y, c=cycle.next())
In realtà, questo è esattamente come funziona il ciclo di colori matplotlib di default. Ogni oggetto asse contiene un itertools.cycle
che sequenzialmente cambia il colore predefinito per ogni riga che viene tracciata su tale asse:
ax = plt.axes()
ax_color_cycle = ax._get_lines.color_cycle
print(ax_color_cycle)
# <itertools.cycle object at 0x7fdb91efae60>
print(ax_color_cycle.next())
# b
print(ax_color_cycle.next())
# g
print(ax_color_cycle.next())
# r
# etc.
il lavoro è perfetto per me! – user3265764