Mam kilka ramek Pandas DataFrames, które mają tę samą skalę wartości, ale mają różne kolumny i indeksy. Podczas wywoływania df.plot()
otrzymuję oddzielne obrazy fabuły. to, czego naprawdę chcę, to mieć je wszystkie na tej samej działce co wątki poboczne, ale niestety nie udaje mi się znaleźć rozwiązania, jak i byłbym bardzo wdzięczny za pomoc.
źródło
.subplots()
zwraca różne układy współrzędnych w zależności od wymiarów tablicy tworzonych wykresów podrzędnych. Więc jeśli zwrócisz działki podrzędne, w których, powiedzmy,nrows=2, ncols=1
będziesz musiał zindeksować osie jakoaxes[0]
iaxes[1]
. Zobacz stackoverflow.com/a/21967899/1569221IndexError: too many indices for array
.subplot()
używane są domyślne argumenty dla . Ustawsqueeze=False
tak,.subplot()
aby zawsze zwracać anndarray
w każdym przypadku wierszy i kolumn.Możesz zobaczyć np. w dokumentacji demonstrującej odpowiedź Jorisa. Również z dokumentacji można było ustawić
subplots=True
iwlayout=(,)
ramachplot
funkcji pandy :Możesz także użyć,
fig.add_subplot()
który przyjmuje parametry siatki podplotu, takie jak 221, 222, 223, 224 itp., Jak opisano w poście tutaj . Ładne przykłady wykresów na ramce danych pandy, w tym wątki poboczne , można zobaczyć w tym notatniku ipython .źródło
subplots
ilayout
kwargs wygenerują wiele wykresów TYLKO dla jednej ramki danych. Jest to związane, ale nie rozwiązuje problemu OP, polegającego na wykreślaniu wielu ramek danych na jednym wykresie.layout=(df.shape[1], 1)
na przykład).Możesz użyć znanego stylu Matplotlib, wywołując a
figure
isubplot
, ale wystarczy określić bieżącą oś za pomocąplt.gca()
. Przykład:itp...
źródło
Możesz wykreślić wiele podplotów wielu ramek danych pandy za pomocą matplotlib z prostą sztuczką tworzenia listy wszystkich ramek danych. Następnie użyj pętli for do kreślenia wykresów podrzędnych.
Kod roboczy:
Za pomocą tego kodu można wykreślić podploty w dowolnej konfiguracji. Musisz tylko zdefiniować liczbę wierszy
nrow
i liczbę kolumnncol
. Musisz także zrobić listę ramek danych,df_list
które chciałeś wykreślić.źródło
count =+1
jednakcount +=1
Możesz użyć tego:
źródło
Być może w ogóle nie będziesz musiał używać Pand. Oto wykres matplotlib częstotliwości kotów:
źródło
Opierając się na powyższej odpowiedzi @joris, jeśli już ustanowiłeś odniesienie do polplotu, możesz również użyć odniesienia. Na przykład,
źródło
Jak utworzyć wiele wykresów ze słownika ramek danych z długimi (uporządkowanymi) danymi
Założenia
cat
,, mogą się na siebie nakładać, ale nie wszystkie ramki danych mogą zawierać wszystkie wartościcat
hue='cat'
Ponieważ ramki danych są iterowane, nie ma gwarancji, że kolory zostaną odwzorowane tak samo dla każdego wykresu
'cat'
wartości dla wszystkich ramek danychImporty i dane syntetyczne
Utwórz odwzorowania kolorów i wydrukuj
źródło