2015-04-09 8 views
17

Rozważmy następujący kod uruchomiony w ipython/Jupyter Notebook:iPython/Jupyter Notebook i Pandy, czyli jak rysować wiele wykresów w pętli for?

from pandas import * 
%matplotlib inline 

ys = [[0,1,2,3,4],[4,3,2,1,0]] 
x_ax = [0,1,2,3,4] 

for y_ax in ys: 
    ts = Series(y_ax,index=x_ax) 
    ts.plot(kind='bar', figsize=(15,5)) 

spodziewałbym mieć 2 oddzielne działki jako wyjście, zamiast Dostałem dwie serie połączyły się w jednym poletku. Dlaczego tak jest? Jak mogę uzyskać dwie osobne działki z pętlą for?

Odpowiedz

22

Wystarczy dodać wywołanie plt.show() po wykreślić wykres (warto import matplotlib.pyplot to zrobić), tak:

from pandas import * 
import matplotlib.pyplot as plt 
%matplotlib inline 

ys = [[0,1,2,3,4],[4,3,2,1,0]] 
x_ax = [0,1,2,3,4] 

for y_ax in ys: 
    ts = Series(y_ax,index=x_ax) 
    ts.plot(kind='bar', figsize=(15,5)) 
    plt.show() 
+0

Great! Łatwy peacy. Dziękuję @Andrey Sobolev –

12

W notebooku ipython najlepszym sposobem na to jest często z wątków . Tworzysz wiele osi na tej samej figurze, a następnie renderujesz figurę w notatniku. Na przykład:

import pandas as pd 
import matplotlib.pyplot as plt 

%matplotlib inline 

ys = [[0,1,2,3,4],[4,3,2,1,0]] 
x_ax = [0,1,2,3,4] 

fig, axs = plt.subplots(ncols=2, figsize=(10, 4)) 
for i, y_ax in enumerate(ys): 
    pd.Series(y_ax, index=x_ax).plot(kind='bar', ax=axs[i]) 
    axs[i].set_title('Plot number {}'.format(i+1)) 

generuje następujące wykresy

enter image description here