跳转到主要内容

为Jupyter笔记本扩展的小部件。

项目描述

ipyumbrella

改进的ipywidgets集合。

在Jupyter中使用小部件非常有用,它可以释放很多潜力。但我经常发现它们很难使用,我总是不断地编写包装函数来捕获输出、添加到选项卡中,并设置标题(使用子索引……呃)。

这可以将大部分功能封装起来,这样你就可以在不知道的情况下包裹一个for循环,并且每个迭代都会输出到一个新的选项卡中,解析可迭代元素中的标题。YAY!

N = 6
def plot_something(i=0, n=N):
    plt.plot([min(i, n/2), min(n - i, n/2)])
    plt.ylim(0, n/2+1)
    plt.title('i={}'.format(i))
import ipyumbrella as uw
import matplotlib.pyplot as plt


for i in uw.Carousel().D.items(range(N)):
    plot_something(i)

安装

pip install ipyumbrella

用法

小部件

  • 轮播:侧向滚动输出
  • 选项卡:与ipywidgets相同
  • 手风琴:与ipywidgets相同

所有描述的方法都适用于这里的小部件。因此,您可以互换示例中的任何小部件。

方便的行内显示

我来自JavaScript,所以我非常习惯于链式调用。您可以使用.display().D行内显示您的小部件,而无需在它之前添加任何项目。这可以节省您创建新行以存储变量和显示小部件的行。

在开始之前显示小部件对于长时间运行的任务是必不可少的,这样您可以在运行时看到进度。

carousel = uw.Carousel()
with carousel.D.item():
    plot_something()

# all equivalent - should display 5 times (including the time above)
carousel.display()
carousel.D
display(carousel)
carousel # last line in cell

可迭代(.items(iterable)

有时您有一个列表或生成器,其中包含您希望显示在选项卡或轮播中的项目。这在您需要绘制约20个图表时非常有用,一个接一个地绘制会使导航笔记本变得难以忍受。您可以可选地设置一个标题函数,它将接收当前可迭代元素作为输入。

uw.h4('Carousel').display()
for i in uw.Carousel().D.items(range(N), title='item {}'.format):
    plot_something(i)

uw.h4('Tabs').display()
for i in uw.Tabs().D.items(range(N), title='this is tab {}'.format):
    plot_something(i)
    
uw.h4('Accordion').display()
for i in uw.Accordion().D.items(range(N), title='see: {}'.format):
    plot_something(i)

函数捕获(@.function

这比封装可迭代项提供了更多的灵活性。从这个函数中输出的任何内容都将添加到它自己的选项卡中。

tb = uw.Tabs().D
@tb.function(title='plotting {}'.format)
def tabfunc(i, **kw):
    plot_something(i, **kw)

tabfunc(3)
tabfunc(4, n=5)
tabfunc(5)

上下文管理器(with .item():

这是其他功能的基础机制。它的作用是创建一个新标签页并附加一个ipywidgets.Output小部件。然后,它使用输出小部件捕获所有输出,例如打印和plt.show(),以便在标签页中显示。

carousel = uw.Carousel().D
for i in range(N):
    with carousel.item():
        plot_something(i)
        
acc = uw.Accordion().D
for i in range(N):
    with acc.item(title='Item {}'.format(i)):
        plot_something(i)

内部,它会这样做。所以如果你愿意的话,你也可以这样做。

# manually add an output as a tab above
tabs = uw.Tabs().D
with tabs.append(uw.Output(), title='something'):
    plot_something(2)

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

ipyumbrella-0.0.29.tar.gz (5.3 kB 查看哈希值)

上传时间 源代码

支持者