标签: ipywidgets

为非技术用户共享交互式 IPython/Jupyter 笔记本

是否有一种最佳方法来共享/服务只读 Jupyter 笔记本,其中隐藏输入代码单元,但连接到实时内核,以便用户可以与小部件交互?

我知道有多种方法可以为小部件嵌入数据,但小部件通常需要针对更大的数据集重新运行查询。

我最近开始学习使用小部件,它们对于与我们的非技术人员共享交互式数据非常有用,但我还没有找到一个好方法。

拥有此功能还可以减少对 Tableau 等昂贵工具的需求。

jupyter-notebook jupyterhub ipywidgets

5
推荐指数
1
解决办法
2367
查看次数

ipywidgets + matplotlib 无法清除旧输出

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
from ipywidgets import interact, FloatSlider, RadioButtons

amplitude_slider = FloatSlider(min=0.1, max=1.0, step=0.1, value=0.2)
color_buttons = RadioButtons(options=['blue', 'green', 'red'])
# decorate the plot function with an environment from the UIs:
@interact(amplitude=amplitude_slider, color=color_buttons)
def plot(amplitude, color):
    fig, ax = plt.subplots(figsize=(4, 3),
                       subplot_kw={'axisbg':'#EEEEEE',
                                   'axisbelow':True})

    ax.grid(color='w', linewidth=2, linestyle='solid')
    x = np.linspace(0, 10, 1000)
    ax.plot(x, amplitude * np.sin(x), color=color,
        lw=5, alpha=0.4)
    ax.set_xlim(0, 10)
    ax.set_ylim(-1.1, 1.1)
Run Code Online (Sandbox Code Playgroud)

多次使用该小部件给了我多个输出:

在此输入图像描述

我需要在代码中更新什么,以便每次使用小部件时都会清除绘图?

matplotlib jupyter-notebook ipywidgets

5
推荐指数
1
解决办法
2424
查看次数

ipywidgets:使用交互时避免闪烁

我制作了一个图形,其中包含分别基于随机正态分布、伽玛分布、指数分布和均匀分布的直方图的四个子图。我使用 matplotlib 和 Jupyter Notebook 制作的。它是通过 ipywidgets lib 生成的交互式图形。特别是,有四个滑动条控制每个直方图上的样本大小并相应地更新它们。然而,当更新直方图时,它会令人烦恼地闪烁。有什么办法可以避免这种情况吗?谢谢。

现在要在 jupyter 笔记本上运行的代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib notebook
from ipywidgets import *

n = 1000
x1 = np.random.normal(-2.5, 1, n)
x2 = np.random.gamma(2, 1.5, n)
x3 = np.random.exponential(2, n)+7
x4 = np.random.uniform(14,20, n)
x = [x1, x2, x3, x4]

fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(10,7))
axs = [ax1,ax2,ax3,ax4]

titles = ['x1\nNormal', 'x2\nGamma', 'x3\nExponential', 'x4\nUniform']
subplots_axes = [[-7,2,0,250], [0,4.5,0,250], [7,25,0,250], …
Run Code Online (Sandbox Code Playgroud)

python matplotlib jupyter-notebook ipywidgets

5
推荐指数
2
解决办法
2689
查看次数

如何将 ipywidget 滑块的默认位置更改为 matplotlib 图形的一侧?

我正在寻找一种方法来更改 matplotlib 图右侧的垂直 IntSlider 的位置。这是代码:

from ipywidgets import interact, fixed, IntSlider
import numpy as np
from matplotlib import pyplot as plt

%matplotlib notebook

fig = plt.figure(figsize=(8,4))

xs = np.random.random_integers(0, 5000, 50)
ys = np.random.random_integers(0, 5000, 50)

ax = fig.add_subplot(111)
scat, = ax.plot(xs, ys, 'kx', markersize=1)
ax.grid(which='both', color='.25', lw=.1)
ax.set_aspect('equal'), ax.set_title('Rotate')

def rotate(theta, xs, ys):
    new_xs = xs * np.cos(np.deg2rad(theta)) - ys * np.sin(np.deg2rad(theta))
    new_xs -= new_xs.min()
    new_ys = xs * np.sin(np.deg2rad(theta)) + ys * np.cos(np.deg2rad(theta))
    new_ys -= new_ys.min()
    return new_xs, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib jupyter ipywidgets

5
推荐指数
1
解决办法
6863
查看次数

如何在未选择值的情况下显示 ipywidgets.Dropdown

没有问题了。问题是较旧的 ipywidgets 版本行为,似乎已在版本 7 中修复。

ipywidgets.Dropdown 本身会从选项列表中选取第一个值。
我想显示没有选择值的小部件。
列表中的第一个值是毫无意义的默认值,仍然需要在工作流程路径中反映出来。我读过一篇讨论,其中开发人员甚至将空字符串项添加到列表中。这修复了下拉列表的外观(在某种程度上,尽管占位符属性仍然被忽略),但向下拉列表添加了一个愚蠢的可选空项目。将虚拟“无”项添加到列表中并不是更好的解决方案。将值设置为“无”会导致“无效选择”异常。
我不明白为什么 ipywidgets.Dropdown 不遵循更简单的小部件的方法,其中允许空值并显示占位符文本以提示用户选择某些内容。
有没有办法让小部件选择不需要?一些我不知道的属性设置?如果这是不可能的,那么最简单的解决方法是什么?

jupyter-notebook ipywidgets

5
推荐指数
1
解决办法
1万
查看次数

更改 Ipywidget 中标签内容的对齐方式

我正在使用 aipywidgets.Label在笔记本中显示文本。基本问题,如何更改文本对齐方式Label?它似乎是左对齐的,我希望它是右对齐的。我确实在文档中寻找过它,但找不到它。

谢谢

python jupyter-notebook ipywidgets

5
推荐指数
2
解决办法
6259
查看次数

每次更新 ipywidgets 时更新显示值

在我的笔记本中,我有 7 个 FloatSlider 小部件。我希望始终显示这 7 个小部件的乘积,当用户移动滑块时,显示的值就会更新。目前我正在尝试在 Widgets.Text (n) 中显示 SliderWidgets 的产品,但我不确定这是否是最佳解决方案。

 import ipywidgets as widgets

caption = widgets.Label(value='Play around with the variables to see how N changes!')   

r = widgets.FloatSlider(value=1,
                         min=1.0,
                         max=3.0,
                         step=0.1,
                         description="R*")

fp = widgets.FloatSlider(value=1,
                         min=0.35,
                         max=1.0,
                         step=0.05,
                         description="fp")

ne = widgets.FloatSlider(value=1
                         min=0.2,
                         max=3.0,
                         step=0.1,
                         description="ne")

fl = widgets.FloatSlider(value=1,
                         min=1.0,
                         max=1.3,
                         step=0.05,
                         description="fl")

fi = widgets.FloatSlider(value=1,
                         min=0.5,
                         max=1.5,
                         step=0.05,
                         description="fi")

fc = widgets.FloatSlider(value=0.20,
                         min=0.10,
                         max=0.30,
                         step=0.05,
                         description="fi",)

l = widgets.FloatSlider(value=60000000.0,
                         min=5000000.0,
                         max=1000000000.0,
                         step=5000000,
                         description="fi")


n = widgets.Text( …
Run Code Online (Sandbox Code Playgroud)

python ipython jupyter-notebook ipywidgets

5
推荐指数
1
解决办法
3906
查看次数

在 ipywidgets 中显示 IPython.display.HTML 类对象

我想在 HBox 布局内显示 IPython.display.HTML 对象(即 html_bt)和小部件(即 bt)。我该如何实现这一目标?有可能吗?或者如何将 html_bt 转换为小部件对象?以下是我的代码:

from ipywidgets import widgets, Layout, HBox
from IPython.display import display, HTML

css_str = '<style>.foo{color:#F00;} )} </style>'


out = widgets.Output()

def OnClick():
    with out:
        print('QQQ')

html_bt=HTML(css_str + '<button class="button-style" onclick="IPython.notebook.kernel.execute(\'OnClick()\')"> <img src="https://www.fnordware.com/superpng/pnggrad16rgb.png" alt="Snow"></button>')

bt = widgets.Button(
    description='Click me',
    disabled=False,
    button_style='', # 'success', 'info', 'warning', 'danger' or ''
    tooltip='Click me',
    icon='check' # (FontAwesome names without the `fa-` prefix)
)


h_box = HBox([bt, display(html_bt)])
h_box
Run Code Online (Sandbox Code Playgroud)

ipython jupyter-notebook ipywidgets

5
推荐指数
1
解决办法
4899
查看次数

Matplotlib 图未使用 ipywidgets 滑块更新

我有以下代码来生成一个简单的图表。

%matplotlib notebook
from ipywidgets import *
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2 * np.pi)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
line, = ax.plot(x, np.sin(x))

def update(w = 1.0):
    line.set_ydata(np.sin(w * x))
    plt.show()

interact(update)
Run Code Online (Sandbox Code Playgroud)

代码生成的图很好 - 输出

但是当我拖动滑块时,图形不会更新。关于为什么会这样的任何想法吗?

python data-visualization matplotlib jupyter-notebook ipywidgets

5
推荐指数
1
解决办法
6456
查看次数

是否可以在 Dash 应用程序中使用 ipywidgets?

我想使用ipywidgets库中的一些下拉菜单、组合框和其他复杂的小部件组合,这些是我在 jupyter 笔记本中开发的。然而,我被迫使用plotly Dash 进行部署。有没有一种方法可以ipywidgets在绘图 Dash 应用程序中显示,而无需将所有单独的小部件转换为它们的破折号等效项?

jupyter jupyter-notebook ipywidgets plotly-dash

5
推荐指数
0
解决办法
864
查看次数