¿Cómo se establece el color de una línea en matplotlib con valores escalares proporcionados en tiempo de ejecución usando un mapa de color (digamos jet
)? Probé un par de enfoques diferentes aquí y creo que estoy perplejo. values[]
es una matriz almacenada de escalares. las curvas son un conjunto de matrices de 1-d, y las etiquetas son una matriz de cadenas de texto. Cada una de las matrices tiene la misma longitud.Uso de Colormaps para establecer el color de la línea en 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()
Esto solo funciona porque tu 'stop' es 1 – Eric
Por supuesto que 1 es el mejor valor. Si desea una gama más amplia de colores, todo lo que necesita hacer es aumentar 'number_of_lines'. Y en el caso de que solo desee una porción de los colores en la banda, reducirá 'stop' e incrementará' start' según sea necesario. – Parousia
Una pregunta rápida: ¿cómo agregar barra de color en lugar de leyenda a su trazado? –