2017-01-08 10 views
5

Mam notatnik jowera i chcę stworzyć fabułę w jednej komórce, następnie napisać trochę obniżki, aby wyjaśnić to w następnym, następnie ustawić granice i ponownie zaplanować w następnym. To jest mój kod do tej pory:Jak ponownie wykorzystać fabułę w następnej komórce Jupera?

# %% 
%matplotlib inline 
import matplotlib.pyplot as plt 
import numpy as np 

x = np.linspace(0, 2 * np.pi) 
y = np.sin(x ** 2) 

plt.plot(x, y); 

# %% 
Some markdown text to explain what's going on before we zoom in on the interesting bit 

# %% 
plt.xlim(xmax=2); 

Początek każdej komórki jest zaznaczony # %% powyżej. Trzecia komórka pokazuje pustą figurę.

Jestem świadomy plt.subplots(2), aby wykreślić 2 działki z jednej komórki, ale to nie pozwala mi mieć przecięcia między działkami.

Z góry dziękuję za pomoc.

Odpowiedz

3

Ten answer to a similar question mówi można ponownie użyć axes i figure z poprzedniej komórki. Wydaje się, że jeśli tylko mają figure jako ostatni element w komórce będzie ponownie wyświetlić jej wykresu:

# %% 
%matplotlib inline 
import matplotlib.pyplot as plt 
import numpy as np 

x = np.linspace(0, 2 * np.pi) 
y = np.sin(x ** 2) 

fig, ax = plt.subplots() 
ax.plot(x, y); 
fig # This will show the plot in this cell, if you want. 

# %% 
Some markdown text to explain what's going on before we zoom in on the interesting bit 

# %% 
ax.xlim(xmax=2); # By reusing `ax`, we keep editing the same plot. 
fig    # This will show the now-zoomed-in figure in this cell. 
+0

Jeśli używasz 'pand', funkcje drukowania zwracają obiekty' matplotlib Axes'. Możesz zrobić rzeczy takie jak 'ax = df.plot()', następnie w późniejszej komórce, 'ax.get_figure()', a to spowoduje zastąpienie figury – blokeley

2

Najprostszą rzeczą, o której mogę myśleć, jest wyodrębnienie kreślenia w funkcję, którą można wywołać dwukrotnie. Na 2. rozmowy można następnie również zadzwonić plt.xlim aby powiększyć Więc coś jak (przy użyciu Ci %% notacji dla nowych komórek).

# %% 
%matplotlib inline 
import matplotlib.pyplot as plt 
import numpy as np 

# %% 
def make_plot(): 
    x = np.linspace(0, 2 * np.pi) 
    y = np.sin(x ** 2) 
    plt.plot(x, y); 

make_plot() 

# %% 
Some markdown text to explain what's going on before we zoom in on the interesting bit 

# %% 
make_plot() 
plt.xlim(xmax=2) 
+0

to jest proste Chyba! Sądziłem, że inni będą mieli tę samą potrzebę i istnieje sposób na utrzymanie żywej postaci między komórkami, ale może nie. Dzięki za odpowiedź. Zaznaczę, że odpowiedź zostanie udzielona, ​​jeśli nikt inny już się nie zaloguje. – blokeley

Powiązane problemy