Come si imposta il colore di una linea in matplotlib con i valori scalari forniti in fase di esecuzione utilizzando una mappa di colori (ad esempio jet
)? Ho provato un paio di approcci diversi qui e penso di essere perplesso. values[]
è una matrice storta di scalari. le curve sono un insieme di matrici 1-d e le etichette sono un array di stringhe di testo. Ciascuno degli array ha la stessa lunghezza.Utilizzo di Colormaps per impostare il colore della linea in matplotlib
fig = plt.figure()
ax = fig.add_subplot(111)
jet = colors.Colormap('jet')
cNorm = colors.Normalize(vmin=0, vmax=values[-1])
scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=jet)
lines = []
for idx in range(len(curves)):
line = curves[idx]
colorVal = scalarMap.to_rgba(values[idx])
retLine, = ax.plot(line, color=colorVal)
#retLine.set_color()
lines.append(retLine)
ax.legend(lines, labels, loc='upper right')
ax.grid()
plt.show()
Funziona solo perché il tuo 'stop' è 1 – Eric
Ovviamente 1 è il valore migliore. Se vuoi una gamma di colori più ampia, tutto ciò che devi fare è aumentare "numero_di_linea". E nel caso in cui si desideri solo una parte dei colori nella banda si riduce 'stop' e si aumenta' start' secondo necessità. – Parousia
Una domanda veloce: come aggiungere la colorbar invece della legenda alla trama? –