Chciałbym NIE określać koloru dla każdej kreślonej linii i aby każda linia miała inny kolor. Ale jeśli biegnę:
from matplotlib import pyplot as plt
for i in range(20):
plt.plot([0, 1], [i, i])
plt.show()
wtedy otrzymuję ten wynik:
Jeśli spojrzysz na powyższy obrazek, zobaczysz, że matplotlib próbuje wybrać kolory dla każdej linii, które są różne, ale ostatecznie ponownie wykorzystuje kolory - dziesięć górnych linii używa tych samych kolorów, co dziesięć dolnych. Chcę po prostu powstrzymać go od powtarzania już używanych kolorów ORAZ / LUB podać listę kolorów do użycia.
matplotlib
dlamotte
źródło
źródło
[colormap(i) for i in np.linspace(0, 0.9, num_plots)]
gdziecolormap
jest jedna z map kolorówmatplotlib.pyplot.cm
inumplots
jest liczbą unikalnych kolorów, które chcesz. Należy jednak pamiętać, że może to skutkować trudnymi do odróżnienia kolorami !!Zwykle używam drugiego z nich:
Przykład 2:
źródło
prop_cycle
color_cycle
został wycofany w wersji 1.5 na korzyść tego uogólnienia: http://matplotlib.org/users/whats_new.html#added-axes-prop-cycle-key-to-rcparamsPokazano również w (teraz źle nazwanym) przykładzie: http://matplotlib.org/1.5.1/examples/color/color_cycle_demo.html wspomnianym na: https://stackoverflow.com/a/4971431/895245
Przetestowano w matplotlib 1.5.1.
źródło
Nie wiem, czy możesz automatycznie zmienić kolor, ale możesz wykorzystać swoją pętlę, aby wygenerować różne kolory:
W takim przypadku kolory będą się różnić od czarnego do 100% zielonego, ale możesz je dostroić, jeśli chcesz.
Zobacz dokumentację matplotlib plot () i poszukaj
color
argumentu słowa kluczowego.Jeśli chcesz podać listę kolorów, po prostu upewnij się, że masz wystarczająco dużą listę, a następnie użyj indeksu pętli, aby wybrać kolor
źródło
Możesz użyć predefiniowanej „jakościowej mapy kolorów” w następujący sposób:
Przetestowano na matplotlib 3.0.3. Zobacz https://github.com/matplotlib/matplotlib/issues/10840, aby dowiedzieć się, dlaczego nie możesz zadzwonić
axes.set_prop_cycle(color=cmap)
.Lista predefiniowanych jakościowych map kolorów jest dostępna pod adresem https://matplotlib.org/gallery/color/colormap_reference.html :
źródło
Możesz także zmienić domyślny cykl kolorów w
matplotlibrc
pliku. Jeśli nie wiesz, gdzie jest ten plik, wykonaj następujące czynności w Pythonie:Spowoduje to wyświetlenie ścieżki do aktualnie używanego pliku matplotlibrc. W tym pliku znajdziesz pośród wielu innych ustawień także to dla
axes.color.cycle
. Po prostu wprowadź żądaną sekwencję kolorów, a znajdziesz ją na każdej działce, którą stworzysz. Zauważ, że możesz także użyć wszystkich prawidłowych nazw kolorów HTML w matplotlib.źródło
Jak zauważa odpowiedź Ciro , możesz użyć
prop_cycle
do ustawienia listy kolorów, przez które matplotlib będzie się przełączać. Ale ile kolorów? A co, jeśli chcesz użyć tego samego cyklu kolorów dla wielu wykresów, z różną liczbą linii?Jedną z taktyk byłoby użycie formuły podobnej do tej z https://gamedev.stackexchange.com/a/46469/22397 , aby wygenerować nieskończoną sekwencję kolorów, w której każdy kolor stara się znacznie różnić od wszystkich, które go poprzedzały.
Niestety,
prop_cycle
nie przyjmie nieskończonych sekwencji - zawiesi się na zawsze, jeśli ją zdasz. Ale możemy wziąć, powiedzmy, pierwsze 1000 kolorów wygenerowanych z takiej sekwencji i ustawić je jako cykl kolorów. W ten sposób w przypadku działek z dowolną rozsądną liczbą linii należy uzyskać rozróżnialne kolory.Przykład:
Wynik:
Teraz wszystkie kolory są inne - chociaż przyznaję, że trudno mi rozróżnić kilka z nich!
źródło