如何使用 Python 在 Jupyter Notebook 中的 matplotlib 图旁边(而不是下方或上方)创建工作按钮?

How can I create working buttons next to (and not below or above) a matplotlib plot in Jupyter Notebook using Python?

我有 2 个按钮和一个图,彼此下方。代码:

from IPython.display import display
import matplotlib.pyplot as plt

button1 = widgets.Button(description="Yes")
display(button1)
button2 = widgets.Button(description="No")
display(button2)

def logyes(b):
    print("yes")

def logno(b):
    print("no")

button1.on_click(logyes)
button2.on_click(logno)

plt.figure(figsize=(3,3))
plt.plot([1,2],[3,4])

Jupyter Notebook 中的结果:

我希望绘图放在按钮旁边,而不是按钮下面。我尝试使用 this example,并将以 axprevaxnext 开头的行更改为:

axprev = plt.axes([-0.2, 0.75, 0.2, 0.1])
axnext = plt.axes([-0.2, 0.65, 0.2, 0.1])

得到结果:

这是正确的方向(绘图在按钮旁边,而不是在按钮下方),但是这些按钮(PreviousNext)在 Jupyter Notebook 中不起作用,因为它们不是 IPython 小部件。

如何在 Jupyter Notebook 中的绘图旁边创建工作按钮?

Matplotlib 和 ipywidgets 似乎经常出现在 SO 上。一种常见的方法是使用 Output 小部件而不是直接绘制到标准输出,并使用标准的 %matplotlib inline 魔法。您可以使用 VBoxHBox 容器小部件来操纵小部件布局。

我不清楚您希望您的按钮做什么,但这是一个示例,说明如何按照所需的排列布置小部件,

%matplotlib inline
import ipywidgets as widgets
import matplotlib.pyplot as plt

button1 = widgets.Button(description="Yes")
button2 = widgets.Button(description="No")
out = widgets.Output()

buttons = widgets.VBox(children=[button1, button2])
all_widgets = widgets.HBox(children=[buttons, out])
display(all_widgets)

def logyes(b):
    print("yes")

def logno(b):
    print("no")

button1.on_click(logyes)
button2.on_click(logno)

with out:
    plt.figure(figsize=(3,3))
    plt.plot([1,2],[3,4])
    plt.show()