Załóżmy, że mam trzy zestawy danych:
X = [1,2,3,4]
Y1 = [4,8,12,16]
Y2 = [1,4,9,16]
Mogę rozproszyć wykres:
from matplotlib import pyplot as plt
plt.scatter(X,Y1,color='red')
plt.scatter(X,Y2,color='blue')
plt.show()
Jak mogę to zrobić z 10 zestawami?
Szukałem tego i mogłem znaleźć jakiekolwiek odniesienie do tego, o co pytam.
Edycja: wyjaśnienie (miejmy nadzieję) moje pytanie
Jeśli wywołam scatter wiele razy, mogę ustawić ten sam kolor tylko na każdym scatter. Wiem też, że mogę ręcznie ustawić tablicę kolorów, ale jestem pewien, że jest na to lepszy sposób. Moje pytanie brzmi zatem: „Jak mogę automatycznie wykreślić rozproszenie moich kilku zestawów danych, z których każdy ma inny kolor.
Jeśli to pomoże, mogę łatwo przypisać unikalny numer do każdego zestawu danych.
python
matplotlib
scatter-plot
Yotam
źródło
źródło
Odpowiedzi:
Nie wiem, co masz na myśli mówiąc „ręcznie”. Możesz wybrać mapę kolorów i łatwo stworzyć tablicę kolorów:
Możesz też stworzyć swój własny cykler kolorów, używając
itertools.cycle
i określając kolory, które chcesz zapętlić, używając,next
aby uzyskać ten, który chcesz. Na przykład przy 3 kolorach:Pomyśl o tym, może lepiej jest nie używać
zip
z pierwszym ani:źródło
plt.legend(['c{}'.format(i) for i in range(len(ys))], loc=2, bbox_to_anchor=(1.05, 1), borderaxespad=0., fontsize=11)
na dole powyższe daje mi legendę z kolorami.Normalnym sposobem kreślenia wykresów z punktami w różnych kolorach w matplotlib jest przekazanie listy kolorów jako parametru.
Na przykład:
Gdy masz listę list i chcesz je pokolorować na liście. Myślę, że najbardziej elegancki sposób jest sugerowany przez @DSM, po prostu wykonaj pętlę, wykonując wiele wywołań rozproszenia.
Ale jeśli z jakiegoś powodu chciałeś to zrobić za pomocą jednego połączenia, możesz sporządzić dużą listę kolorów, ze zrozumieniem listy i odrobiną podziału podłogi:
źródło
Łatwa naprawa
Jeśli masz tylko jeden typ kolekcji (np. Rozproszone bez słupków błędów), możesz również zmienić kolory po ich wykreśleniu, co czasami jest łatwiejsze do wykonania.
Jedyny fragment kodu, którego potrzebujesz:
Wynik daje różne kolory, nawet jeśli masz wiele różnych wykresów rozrzutu na tym samym wykresie podrzędnym.
źródło
Zawsze możesz użyć tej
plot()
funkcji w następujący sposób:źródło
To pytanie jest trochę podchwytliwe przed styczniem 2013 i matplotlib 1.3.1 (sierpień 2013), który jest najstarszą stabilną wersją, jaką można znaleźć na stronie matpplotlib. Ale potem jest to dość trywialne.
Ponieważ obecna wersja
matplotlib.pylab.scatter
obsługuje przypisywanie: tablica nazw kolorów, tablica liczb zmiennoprzecinkowych z mapą kolorów, tablica RGB lub RGBA.ta odpowiedź jest poświęcona nieskończonej pasji @ Oxinabox do poprawiania mojej wersji z 2013 roku w 2015 roku.
masz dwie możliwości użycia polecenia rozproszenia z wieloma kolorami w jednym wywołaniu.
jako
pylab.scatter
obsługa poleceń użyj tablicy RGBA, aby zrobić dowolny kolor;na początku 2013 roku nie było takiej możliwości, ponieważ polecenie obsługuje tylko jeden kolor dla całej kolekcji punktów rozrzutu. Kiedy wykonywałem swój projekt o długości 10000 linii, znalazłem ogólne rozwiązanie, aby go ominąć. więc jest bardzo lepki, ale mogę to zrobić w dowolnym kształcie, kolorze, rozmiarze i przezroczystości. ta sztuczka może być również zastosowana do narysowania kolekcji ścieżek, kolekcji linii ...
kod jest również inspirowany kodem źródłowym
pyplot.scatter
, po prostu zduplikowałem to, co robi scatter bez wyzwalania go do rysowania.polecenie
pyplot.scatter
zwracaPatchCollection
obiekt, w pliku „matplotlib / collections.py” prywatną zmienną_facecolors
wCollection
klasie i metodzieset_facecolors
.więc zawsze, gdy masz do narysowania punkty rozproszone, możesz to zrobić:
źródło
To działa dla mnie:
dla każdej serii użyj losowego generatora kolorów rgb
źródło
plt.scatter(your values to the graph, color= (np.random.random_sample(), np.random.random_sample(), np.random.random_sample()) )
. Wspomniałeś o generatorze RGB i zadeklarowałeś listę RGB, generatory są zadeklarowane między '()'DUŻO szybszym rozwiązaniem w przypadku dużego zbioru danych i ograniczonej liczby kolorów jest użycie Pand i funkcji grupowania:
źródło