Gostaria de NÃO especificar uma cor para cada linha traçada e fazer com que cada linha obtivesse uma cor distinta. Mas se eu correr:
from matplotlib import pyplot as plt
for i in range(20):
plt.plot([0, 1], [i, i])
plt.show()
então recebo esta saída:
Se você olhar para a imagem acima, você pode ver que matplotlib tenta escolher cores para cada linha que são diferentes, mas eventualmente ele reutiliza cores - as dez primeiras linhas usam as mesmas cores que as dez últimas. Eu só quero impedir que ele repita as cores já usadas E / OU alimentá-lo com uma lista de cores para usar.
matplotlib
Dlamotte
fonte
fonte
[colormap(i) for i in np.linspace(0, 0.9, num_plots)]
ondecolormap
está um dos mapas de coresmatplotlib.pyplot.cm
enumplots
é o número de cores exclusivas que você deseja. Esteja ciente de que isso pode resultar em cores difíceis de distinguir umas das outras !!Eu costumo usar o segundo destes:
Exemplo de 2:
fonte
prop_cycle
color_cycle
foi descontinuado em 1.5 em favor desta generalização: http://matplotlib.org/users/whats_new.html#added-axes-prop-cycle-key-to-rcparamsTambém mostrado no exemplo (agora com nome incorreto): http://matplotlib.org/1.5.1/examples/color/color_cycle_demo.html mencionado em: https://stackoverflow.com/a/4971431/895245
Testado em matplotlib 1.5.1.
fonte
Não sei se você pode mudar a cor automaticamente, mas você pode explorar seu loop para gerar cores diferentes:
Nesse caso, as cores variam de preto a 100% verde, mas você pode ajustá-lo se quiser.
Veja a documentação matplotlib plot () e procure o
color
argumento de palavra - chave.Se você quiser alimentar uma lista de cores, apenas certifique-se de que tem uma lista grande o suficiente e então use o índice do loop para selecionar a cor
fonte
Você pode usar um "mapa de cores qualitativo" predefinido como este:
Testado em matplotlib 3.0.3. Consulte https://github.com/matplotlib/matplotlib/issues/10840 para uma discussão sobre por que você não pode ligar
axes.set_prop_cycle(color=cmap)
.Uma lista de mapas de cores qualitativos predefinidos está disponível em https://matplotlib.org/gallery/color/colormap_reference.html :
fonte
Você também pode alterar o ciclo de cores padrão em seu
matplotlibrc
arquivo. Se você não sabe onde está o arquivo, faça o seguinte em python:Isso mostrará o caminho para o arquivo matplotlibrc usado atualmente. Nesse arquivo você encontrará, entre muitas outras configurações, também aquela para
axes.color.cycle
. Basta inserir a sequência de cores desejada e você a encontrará em cada plotagem que fizer. Observe que você também pode usar todos os nomes de cores html válidos em matplotlib.fonte
Como notas de resposta de Ciro , você pode usar
prop_cycle
para definir uma lista de cores para matplotlib percorrer. Mas quantas cores? E se você quiser usar o mesmo ciclo de cores para muitos plotagens, com diferentes números de linhas?Uma tática seria usar uma fórmula como a de https://gamedev.stackexchange.com/a/46469/22397 , para gerar uma sequência infinita de cores onde cada cor tenta ser significativamente diferente de todas as que a precederam.
Infelizmente,
prop_cycle
não aceita sequências infinitas - ficará pendurado para sempre se você passar por uma. Mas podemos pegar, digamos, as primeiras 1000 cores geradas a partir de tal sequência e defini-la como o ciclo de cores. Dessa forma, para plotagens com qualquer número razoável de linhas, você deve obter cores distintas.Exemplo:
Resultado:
Agora, todas as cores são diferentes - embora eu admita que tenho dificuldade em distinguir algumas delas!
fonte