2

我想制作一个图形并使用 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吗?

4

1 回答 1

2

display(fig)您应该使用in显式调用该图change_radius()

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))
于 2016-03-18T16:22:14.420 回答