2017-01-08 2 views
5

У меня есть блокнот jupyter и вы хотите создать график в одной ячейке, затем напишите некоторое уценку, чтобы объяснить это в следующем, а затем установите ограничения и график снова в следующем. Это мой код:Как использовать график в следующей ячейке jupyter

# %% 
%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); 

Начало каждой ячейки отмечено # %% выше. Третья ячейка показывает пустую цифру.

Я знаю plt.subplots(2), чтобы построить 2 участка из одной ячейки, но это не позволяет мне иметь уценку между графиками.

Заранее благодарим за любую помощь.

ответ

3

Это answer to a similar question говорит, что вы можете повторно использовать axes и figure из предыдущей ячейки. Кажется, что если вы просто figure как последний элемент в ячейке будет повторно отобразить ее график:

# %% 
%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

Если вы используете 'pandas', функции построения возвращают объекты matplotlib Axes'. Вы можете делать такие вещи, как 'ax = df.plot()', а затем в более поздней ячейке 'ax.get_figure()', и это будет реплицировать фигуру – blokeley

2

Самое простое, что я могу придумать, - это извлечь сюжет в функцию, которую вы можете вызвать дважды. На 2-й вызов вы можете также позвонить plt.xlim, чтобы увеличить Так что-то подобное (с помощью вас %% обозначения для новых клеток).

# %% 
%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

Это просто я думаю! Я думал, что у других будет такая же потребность, и есть какой-то способ сохранить фигуру в живых клетках, но, возможно, нет. Спасибо за Ваш ответ. Я помечаю, что он ответил, если в ближайшее время не будет других фишек. – blokeley

Смежные вопросы