找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2590

积分

1

好友

359

主题
发表于 昨天 11:07 | 查看: 6| 回复: 0

还在为生成的静态图表无法交互而苦恼吗?Bokeh正是为此而生的利器。它是一个用于创建交互式、可缩放、可发布数据可视化的Python库,专为现代Web浏览器设计,能让你轻松制作出美观又功能丰富的交互式图表和数据应用。

封面装饰图:海边日落与玫瑰

🎨 你的第一个交互式图表

Bokeh可以通过pip轻松安装。我们从最简单的散点图开始,体验如何用几行代码创建一个带有工具栏的交互式图表。

from bokeh.plotting import figure, output_file, show
from bokeh.sampledata.iris import flowers

source = flowers
output_file(“my_first_bokeh_plot.html”)
p = figure(title=“鸢尾花数据集散点图”, toolbar_location=“above”)
p.circle(‘petal_length’, ‘petal_width’, source=source, color=‘species’, legend_field=‘species’)
show(p)

执行上述代码会生成一个名为 my_first_bokeh_plot.html 的文件,在浏览器中打开即可进行交互操作,如缩放、平移等。

🔗 理解ColumnDataSource与悬停提示

Bokeh的强大之处在于其核心的 ColumnDataSource 对象。通过它,我们可以轻松地为图表添加丰富的悬停提示功能。

from bokeh.models import ColumnDataSource, HoverTool

data = {‘x’: [1, 2, 3, 4, 5], ‘y’: [6, 7, 2, 4, 5], ‘desc’: [‘A点’, ‘B点’, ‘C点’, ‘D点’, ‘E点’]}
source = ColumnDataSource(data=data)
p = figure(tools=“pan,wheel_zoom,box_zoom,reset,save”)
p.circle(‘x’, ‘y’, size=20, source=source)
hover = HoverTool(tooltips=[(“描述”, “@desc”), (“(x,y)”, “(@x, @y)”)])
p.add_tools(hover)
show(p)

这段代码将生成一个交互式散点图,当鼠标悬停在数据点上时,会显示我们自定义的描述信息和坐标值。

📊 多图布局与主题样式

Bokeh支持将多个图表组合成复杂的仪表盘布局,并且可以通过主题轻松改变整套图表的外观风格。

from bokeh.layouts import row

p1 = figure(width=300, height=300)
p1.circle([1, 2, 3], [4, 5, 6], size=20, color=“navy”)
p2 = figure(width=300, height=300)
p2.line([1, 2, 3, 4], [4, 5, 2, 7], line_width=3, color=“firebrick”)
layout = row(p1, p2)
show(layout)

运行后,你会看到两个子图被水平排列在一个布局中,这为构建数据科学仪表盘奠定了基础。

🌐 构建可嵌入的独立Web应用

借助 bokeh.server 模块,你可以超越简单的图表,创建真正的数据驱动型Web应用程序,并可以部署为独立的Web服务。

from bokeh.models import Slider
from bokeh.layouts import column
from bokeh.plotting import curdoc, figure
import numpy as np

x = np.linspace(0, 10, 200)
plot = figure(height=300)
line = plot.line(x, np.sin(x))
slider = Slider(start=0, end=10, value=1, step=0.1, title=“频率”)
def update(attr, old, new):
    line.data_source.data[‘y’] = np.sin(x * new)
slider.on_change(‘value’, update)
layout = column(slider, plot)
curdoc().add_root(layout)
# 使用命令 bokeh serve --show my_app.py 启动应用

此代码定义了一个包含滑块控件的应用,滑动滑块可以实时更新正弦曲线的频率。你需要通过命令行 bokeh serve --show my_app.py 来启动这个Bokeh服务器应用。

⚖️ 优势对比与使用建议

与Matplotlib这类经典库相比,Bokeh的原生优势在于为Web环境而生,直接支持丰富的交互。而与Plotly等高级库相比,Bokeh又提供了更低层级、更灵活的控制能力。

因此,当你需要创建用于网页发布或在线展示的交互式图表,甚至是构建一个以可视化为中心的Web应用时,Bokeh是一个非常值得考虑的选择。

💬 总结

Bokeh成功地将数据可视化从静态的“图片”升级为动态的“交互界面”,极大地增强了数据探索和叙事的吸引力与可能性。无论是用于分析报告还是构建监控面板,它都能提供强大的支持。欢迎在云栈社区交流更多关于Python可视化工具的使用心得。




上一篇:MongoDB副本集与Redis Sentinel架构对比:高可用集群设计与选型指南
下一篇:红黑树 vs B+树:面试高频区别解析与数据库选型B+树深度原因
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-16 00:34 , Processed in 1.317025 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表