【问题标题】:Voila unwanted refresh for scatter plot瞧,散点图不需要刷新
【发布时间】:2021-12-17 23:22:48
【问题描述】:

我正在尝试构建一个简单的小部件应用程序。它在 Jupyter 笔记本中运行良好,但是当我将它部署为一个应用程序时,每次我更改滑块时,整个页面都会刷新。

这是我的代码:

from bqplot import Figure
from bqplot import pyplot as plt
import numpy as np
import ipywidgets as widgets

def scatter_plot(n):
    fig = plt.figure()
    x = np.random.uniform(-1,1,n)
    y = np.random.uniform(-1,1,n)
    scatter = plt.scatter(x,y,default_size=10)
    plt.show()
slider = widgets.IntSlider(min=0,max=1000,value=10)
widgets.interact(scatter_plot, n=slider)

代码应该在网格中显示一些随机点,并且滑块会改变点的数量。同样,代码有效,但我唯一的问题是,当我更改滑块时它会不断刷新(当它是一个瞧瞧应用程序时)。

【问题讨论】:

    标签: python widget voila


    【解决方案1】:

    每次滑块值更改时,您都在重新创建图形。如果只更改散点标记中的 x 和 y 值,那么这会更平滑。此外,如果您将滑块中的步进增量更改为 10,则它会使其更具响应性。

    from bqplot import Figure
    from bqplot import pyplot as plt
    import numpy as np
    import ipywidgets as widgets
    
    fig = plt.figure()
    n = 10
    x = np.random.uniform(-1,1,n)
    y = np.random.uniform(-1,1,n)
    scatter = plt.scatter(x,y,default_size=10)
        
    def scatter_plot(n):
        scatter.x = np.random.uniform(-1,1,n)
        scatter.y = np.random.uniform(-1,1,n)
        
    # plt.show()
    slider = widgets.IntSlider(min=0,max=1000,value=10, step = 1)
    widgets.interact(scatter_plot, n=slider)
    fig
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      • 2021-01-19
      • 1970-01-01
      • 2018-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多