利用Python的Bokeh库绘制可拖动滑块改变散点大小的图形
代码如下:
from bokeh.io import curdoc
from bokeh.layouts import column
from bokeh.models import Slider
from bokeh.plotting import figure
# 创建一个简单的散点图
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]
p = figure(title="散点图", x_axis_label='x', y_axis_label='y')
# 使用 scatter 方法替代 circle 方法
r = p.scatter(x, y, size=10)
# 创建一个滑块小部件
slider = Slider(start=5, end=20, value=10, step=1, title="点的大小")
# 定义回调函数,用于更新散点图中点的大小
def callback(attr, old, new):
r.glyph.size = slider.value
# 监听滑块值的变化,并调用回调函数
slider.on_change('value', callback)
# 将滑块和图表组合在一起
layout = column(slider, p)
# 将布局添加到当前文档中
curdoc().add_root(layout)
代码解释
导入必要的库:
curdoc():用于获取当前的 Bokeh 文档。
column():用于将多个 Bokeh 模型垂直排列。
Slider:用于创建滑块小部件。
figure:用于创建绘图区域。
创建散点图:
定义 x 和 y 坐标数据。
使用 figure() 函数创建一个绘图区域。
使用 circle() 方法在绘图区域中绘制散点图。
创建滑块小部件:
使用 Slider() 函数创建一个滑块,设置滑块的起始值、结束值、当前值、步长和标题。
定义回调函数:
当滑块的值发生变化时,调用 callback() 函数。
在回调函数中,更新散点图中点的大小。
监听滑块值的变化:
使用 on_change() 方法监听滑块的 value 属性变化,并指定回调函数。
组合布局:
使用 column() 函数将滑块和图表垂直排列。
添加布局到当前文档:
使用 curdoc().add_root() 方法将布局添加到当前的 Bokeh 文档中。
将上述代码保存为一个 Python 文件,例如 Bokehslider.py
,然后在终端中运行以下命令“
bokeh serve --show Bokehsilde.py
运行后,在浏览器中就会打开一个包含滑块的交互式散点图页面,你可以通过拖动滑块来改变散点的大小。
作者:python游乐园