利用 Python 和 Bokeh 实施数据可视化:用图表创造惊人互动数据可视化
2024-02-05 23:45:08
我们的上一篇文章中,我们展示了在 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
模块轻松地将交互性添加到您的图表中。这可以使您的图表更具吸引力,并允许用户探索数据并从中获得更多见解。