Layout jupyter笔记本中布局ipywidgets的控制

Layout jupyter笔记本中布局ipywidgets的控制,layout,jupyter,ipywidgets,Layout,Jupyter,Ipywidgets,我在理解如何控制jupyter笔记本中ipywidgets的flexbox时遇到了一些问题。根据说明,这应该是可能的,但是我的样式代码(见下文)不会产生所需的布局。我检查了堆栈,发现一个似乎适合那里的人的方法,但是运行代码仍然不能提供所需的结果 问题 我希望控件构建更复杂的布局。在这种情况下,特别是目标是使滑块垂直靠近matpltolib绘图: from matplotlib.pyplot import subplots from IPython.display import display i

我在理解如何控制jupyter笔记本中ipywidgets的flexbox时遇到了一些问题。根据说明,这应该是可能的,但是我的样式代码(见下文)不会产生所需的布局。我检查了堆栈,发现一个似乎适合那里的人的方法,但是运行代码仍然不能提供所需的结果

问题 我希望控件构建更复杂的布局。在这种情况下,特别是目标是使滑块垂直靠近matpltolib绘图:

from matplotlib.pyplot import subplots
from IPython.display import display
import ipywidgets as ipy
import numpy as np

# setup figure
n = 10
fig, ax = subplots(figsize = (5,5))
h = ax.imshow(np.random.rand(n, n))

# show random mesh
def update(idx):
    h.set_data(np.random.rand(n, n))
    fig.canvas.flush_events()
    fig.canvas.draw()
slider = ipy.IntSlider(min = 0, max = 10, orientation = 'vertical')
widget = ipy.interactive(update, idx = slider)

layout = ipy.Layout(display = 'flex',\
                   flex_flow = 'row',\
                   justify_content = 'space-between',\
                   align_items = 'center',\
                   )
widgets = ipy.HBox(widget.children[::-1], layout = layout)
display(widgets)
然而,它会导致


如何使用jupyter notebook中的IPyWidget强制布局为水平列?

尝试专门创建一个输出小部件来包含图表,然后将其作为您的一个子部件放在HBox中:

从IPython.display导入显示,清除\u输出
将ipywidgets作为ipy导入
将matplotlib.pyplot作为plt导入
将numpy作为np导入
#安装图
n=10
out=ipy.Output()
#显示随机网格
def更新(idx):
不包括:
清除输出()
图,ax=plt.子批次(图尺寸=(5,5))
h=ax.imshow(np.random.rand(n,n))
h、 set_数据(np.random.rand(n,n))
图canvas.flush_事件()
图canvas.draw()
plt.show()
slider=ipy.IntSlider(最小值=0,最大值=10,方向为“垂直”)
widget=ipy.interactive(更新,idx=slider)
布局=ipy.layout(
#显示='flex',
#flex_flow='行',
#justify_content='space between',
#对齐_项='居中',
)
widgets=ipy.HBox(子项=(滑块,输出),布局=布局)
显示(小部件)

您好,谢谢您的回答,但是重建图形会导致闪烁,因此不推荐使用;我来看看这个输出对象,谢谢!