Me gustaría NO especificar un color para cada línea trazada y que cada línea tenga un color distinto. Pero si corro:
from matplotlib import pyplot as plt
for i in range(20):
plt.plot([0, 1], [i, i])
plt.show()
entonces obtengo esta salida:
Si observa la imagen de arriba, puede ver que matplotlib intenta elegir colores para cada línea que son diferentes, pero eventualmente reutiliza los colores: las diez líneas superiores usan los mismos colores que las diez inferiores. Solo quiero evitar que repita colores ya usados Y / O alimentarlo con una lista de colores para usar.
matplotlib
dlamotte
fuente
fuente
[colormap(i) for i in np.linspace(0, 0.9, num_plots)]
dóndecolormap
está uno de los mapas de coloresmatplotlib.pyplot.cm
ynumplots
es el número de colores únicos que quieras. Sin embargo, tenga en cuenta que esto puede dar como resultado colores que son difíciles de distinguir entre sí.Normalmente uso el segundo de estos:
Ejemplo de 2:
fuente
prop_cycle
color_cycle
fue obsoleto en 1.5 a favor de esta generalización: http://matplotlib.org/users/whats_new.html#added-axes-prop-cycle-key-to-rcparamsTambién se muestra en el ejemplo (ahora mal nombrado): http://matplotlib.org/1.5.1/examples/color/color_cycle_demo.html mencionado en: https://stackoverflow.com/a/4971431/895245
Probado en matplotlib 1.5.1.
fuente
No sé si puede cambiar el color automáticamente, pero podría aprovechar su bucle para generar diferentes colores:
En este caso, los colores variarán del negro al 100% verde, pero puedes afinarlo si quieres.
Consulte los documentos de matplotlib plot () y busque el
color
argumento de palabra clave.Si desea alimentar una lista de colores, solo asegúrese de tener una lista lo suficientemente grande y luego use el índice del ciclo para seleccionar el color
fuente
Puede utilizar un "mapa de colores cualitativo" predefinido como este:
Probado en matplotlib 3.0.3. Consulte https://github.com/matplotlib/matplotlib/issues/10840 para obtener información sobre por qué no puede llamar
axes.set_prop_cycle(color=cmap)
.Una lista de mapas de color cualitativos predefinidos está disponible en https://matplotlib.org/gallery/color/colormap_reference.html :
fuente
También puede cambiar el ciclo de color predeterminado en su
matplotlibrc
archivo. Si no sabe dónde está ese archivo, haga lo siguiente en Python:Esto le mostrará la ruta a su archivo matplotlibrc actualmente utilizado. En ese archivo encontrará, entre muchas otras configuraciones, también la de
axes.color.cycle
. Simplemente coloque la secuencia de colores deseada y la encontrará en cada trama que haga. Tenga en cuenta que también puede utilizar todos los nombres de colores HTML válidos en matplotlib.fuente
Como señala la respuesta de Ciro , puede usar
prop_cycle
para establecer una lista de colores para que matplotlib recorra el ciclo. ¿Pero cuántos colores? ¿Qué sucede si desea utilizar el mismo ciclo de color para muchos gráficos, con diferentes números de líneas?Una táctica sería utilizar una fórmula como la de https://gamedev.stackexchange.com/a/46469/22397 , para generar una secuencia infinita de colores donde cada color intenta ser significativamente diferente de todos los que lo precedieron.
Desafortunadamente,
prop_cycle
no aceptará secuencias infinitas, se bloqueará para siempre si le pasa una. Pero podemos tomar, digamos, los primeros 1000 colores generados a partir de dicha secuencia y establecerlo como ciclo de color. De esa manera, para las parcelas con cualquier número de líneas, debería obtener colores distinguibles.Ejemplo:
Salida:
Ahora, todos los colores son diferentes, ¡aunque admito que me cuesta distinguir algunos de ellos!
fuente