返回

利用 Python 和 Bokeh 实施数据可视化:用图表创造惊人互动数据可视化

人工智能

我们的上一篇文章中,我们展示了在 Bokeh 中创建一个基本柱状图。它显示了 2013 年从纽约市起飞的航班延迟到达的分布情况。这个图表虽然完成了任务,但并不是很吸引人。用户几乎看不到航班延迟的发生情况。

为了让图表更具吸引力,我们可以添加一些交互性。例如,我们可以添加一个滑块,允许用户选择要显示的数据范围。我们还可以添加一个下拉菜单,允许用户选择要显示的图表类型。

添加交互性的一种方法是使用 Bokeh 的 widgets 模块。此模块提供了一系列交互式小部件,如滑块、下拉菜单和复选框。

要使用 widgets 模块,首先需要将它导入到你的脚本中。您可以使用以下代码来做到这一点:

from bokeh.models import Slider, Select, CheckboxGroup

接下来,您可以创建要添加到图表的交互式小部件。例如,要创建一个滑块,您可以使用以下代码:

slider = Slider(start=0, end=10, value=5, step=.1, title="滑块")

此代码将创建一个滑块,其范围从 0 到 10,初始值为 5,步长为 0.1,并将其标题设置为“滑块”。

要将滑块添加到图表,您可以使用 add_layout() 方法。此方法将小部件添加到图表的布局中。以下是如何使用它来将滑块添加到图表:

layout.add_layout(slider)

现在,当您运行脚本时,滑块将显示在图表中。您可以使用滑块来更改图表显示的数据范围。

添加交互性的另一种方法是使用 Bokeh 的 callbacks 模块。此模块提供了一系列回调函数,允许您在用户与图表交互时执行某些操作。

要使用 callbacks 模块,首先需要将它导入到你的脚本中。您可以使用以下代码来做到这一点:

from bokeh.models import CustomJS

接下来,您可以创建要添加到图表的回调函数。例如,要创建一个回调函数,在用户更改滑块的值时更改图表的数据,您可以使用以下代码:

def update_data(attr, old, new):
    # 获取滑块的新值
    new_value = slider.value

    # 根据新的值更新数据
    data = update_data(new_value)

    # 更新图表中的数据
    source.data = data

此代码将创建一个回调函数,该函数在用户更改滑块的值时执行。函数首先获取滑块的新值,然后根据新的值更新数据。最后,函数将更新图表中的数据。

要将回调函数添加到图表,您可以使用 on_change() 方法。此方法将回调函数附加到图表中的交互式小部件。以下是如何使用它来将回调函数附加到滑块:

slider.on_change('value', update_data)

现在,当用户更改滑块的值时,回调函数将执行。回调函数将更新图表中的数据,并根据新的数据重新绘制图表。

使用 Bokeh 创建交互式数据可视化图表非常简单。您可以使用 widgets 模块和 callbacks 模块轻松地将交互性添加到您的图表中。这可以使您的图表更具吸引力,并允许用户探索数据并从中获得更多见解。