2013-05-06 14 views
53

Zacząłem moim notebooku ipython zDodać więcej niż jeden wykres w samym ipython komórce Notebook

ipython notebook --pylab inline 

To jest mój kod w jednej komórce

df['korisnika'].plot() 
df['osiguranika'].plot() 

to działa dobrze, to wyciągnąć dwa linie, ale na tym samym wykresie.

Chciałbym narysować każdą linię na oddzielnym wykresie. Byłoby świetnie, gdyby wykresy były obok siebie, a nie jedno po drugim.

Wiem, że mogę umieścić drugi wiersz w następnej komórce, a następnie dostanę dwa wykresy. Ale chciałbym, aby wykresy były blisko siebie, ponieważ reprezentują tę samą jednostkę logiczną.

Odpowiedz

56

Dokonaj wielu osi pierwszej i przekazać je do funkcji plot pandy, jak:

fig, axs = plt.subplots(1,2) 

df['korisnika'].plot(ax=axs[0]) 
df['osiguranika'].plot(ax=axs[1]) 

To wciąż daje 1 figurę, ale z dwóch różnych działkach obok siebie.

+2

to działa. Teraz nie będę zmieniać rozmiaru obrazu. Mogę to zrobić za pomocą rys, axs = plt.subplots (1,2, figsize = (15, 5)). Czy istnieje sposób na ustawienie rozmiaru obrazu w pikselach? – WebOrCode

+0

Używanie figi jest rzeczywiście sposobem, to jest rozmiar w calach. Liczba pikseli, które będą zależeć od rozdzielczości, która jest ustalona do wyświetlania na ekranie. Ale do zapisania można ustawić, dodając słowo kluczowe dpi. –

+2

Nie jest do końca dokładne, że rozdzielczość dpi jest ustalona dla wyświetlenia na ekranie (dobrze, że jest * i * nie jest). IPython wyświetla obrazy oparte wyłącznie na ich rozmiarze piksela, a rozmiar tego piksela jest określany w matplotlib przez pomnożenie wielkości cyfry w calach przez konfigurację 'savefig.dpi'. Liczby inline używają tej samej ścieżki savefig, co zapisywanie plików. – minrk

54

Możesz również wywołać funkcję show() po każdym wydruku. np

plot(a) 
    show() 
    plot(b) 
    show() 

patrz przykład o - http://nbviewer.ipython.org/6151560

+1

Świetnie, ale jak ustawić lokalizację obrazu działki, jak (2,2) lub (1,2)? – Pythoner

+0

Ta opcja powoduje, że wykresy pojawiają się kolejno jeden po drugim. Aby uzyskać większą kontrolę nad ogólnym układem, '' pyplot.subplots() 'jest drogą do zrobienia. – EOL

5

inny sposób, dla odmiany. Chociaż jest to nieco mniej elastyczne niż pozostałe. Niestety, wykresy pojawiają się jeden nad drugim, a nie obok siebie, o które prosiłeś w oryginalnym pytaniu. Ale jest bardzo zwięzły.

df.plot(subplots=True) 

Jeśli dataframe ma więcej niż dwie serie, a chcesz tylko wykreślić te dwa, trzeba zastąpić df z df[['korisnika','osiguranika']].

1

Nie wiem, czy jest to nowa funkcjonalność, ale będzie to działka na oddzielnych rysunkach:

df.plot(y='korisnika') 
df.plot(y='osiguranika') 

natomiast będzie to działki, na tym samym rysunku: (podobnie jak kod w op)

df.plot(y=['korisnika','osiguranika']) 

Znalazłem to pytanie, ponieważ użyłem poprzedniej metody i chciałem, aby napisali na tej samej figurze, więc twoje pytanie było właściwie moją odpowiedzią.

1

coś takiego:

import matplotlib.pyplot as plt 
... code for plot 1 ... 
plt.show() 
... code for plot 2... 
plt.show() 

Należy pamiętać, że będzie to również działać, jeśli używasz pakietu seaborn do kreślenia:

import matplotlib.pyplot as plt 
import seaborn as sns 
sns.barplot(... code for plot 1 ...) # plot 1 
plt.show() 
sns.barplot(... code for plot 2 ...) # plot 2 
plt.show() 
Powiązane problemy