使用 %matplotlib notebook 时,Graph 和 ipywidget 不能在同一个代码单元中
Graph and ipywidget cannot be in same code cell when using %matplotlib notebook
我想制作一个图形并用ipywidgets交互改变它。
当我使用 %matplotlib notebook
时,小部件调用需要在单独的代码单元中,这很奇怪。这是不起作用的代码
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
%matplotlib notebook
fig = plt.figure(figsize=(6, 6))
ax1 = plt.subplot(111, aspect='equal')
ax1.set_xlim(-5,5)
ax1.set_ylim(-5,5)
circ = Circle((0,0), radius=1)
ax1.add_patch(circ)
def change_radius(r=1):
circ.set_radius(r)
from ipywidgets import interact
interact(change_radius, r=(1.0, 5))
这仅在最后两行位于单独的代码单元中时才有效,但代码单元随后将小部件与图表分开。有人知道如何使用 %matplotlib notebook
让它在一个代码单元中工作吗?
您应该在 change_radius()
中使用 display(fig)
显式调用该图:
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
from IPython.display import display
%matplotlib notebook
fig = plt.figure(figsize=(6, 6))
ax1 = plt.subplot(111, aspect='equal')
ax1.set_xlim(-5,5)
ax1.set_ylim(-5,5)
circ = Circle((0,0), radius=1)
ax1.add_patch(circ)
def change_radius(r=1):
circ.set_radius(r)
display(fig)
from ipywidgets import interact
interact(change_radius, r=(1.0, 5))
我想制作一个图形并用ipywidgets交互改变它。
当我使用 %matplotlib notebook
时,小部件调用需要在单独的代码单元中,这很奇怪。这是不起作用的代码
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
%matplotlib notebook
fig = plt.figure(figsize=(6, 6))
ax1 = plt.subplot(111, aspect='equal')
ax1.set_xlim(-5,5)
ax1.set_ylim(-5,5)
circ = Circle((0,0), radius=1)
ax1.add_patch(circ)
def change_radius(r=1):
circ.set_radius(r)
from ipywidgets import interact
interact(change_radius, r=(1.0, 5))
这仅在最后两行位于单独的代码单元中时才有效,但代码单元随后将小部件与图表分开。有人知道如何使用 %matplotlib notebook
让它在一个代码单元中工作吗?
您应该在 change_radius()
中使用 display(fig)
显式调用该图:
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
from IPython.display import display
%matplotlib notebook
fig = plt.figure(figsize=(6, 6))
ax1 = plt.subplot(111, aspect='equal')
ax1.set_xlim(-5,5)
ax1.set_ylim(-5,5)
circ = Circle((0,0), radius=1)
ax1.add_patch(circ)
def change_radius(r=1):
circ.set_radius(r)
display(fig)
from ipywidgets import interact
interact(change_radius, r=(1.0, 5))