bokeh,一个超强的 Python 库详解

2024-01-04


概要

数据可视化在数据分析和报告中扮演着关键角色,而Python的Bokeh库为创建交互式、具有吸引力的可视化图表提供了强大的工具。本文将介绍Bokeh的基本概念、安装方法以及详细的示例代码,以帮助大家了解如何使用Bokeh创建出色的数据可视化。


什么是Bokeh?

Bokeh是一个Python库,用于创建交互式的、现代化的Web可视化工具。它允许用户创建各种类型的图表,包括线图、散点图、柱状图、热图等,而且这些图表都可以在Web浏览器中交互式地操作。

Bokeh的主要特点包括:

  • 交互性 :Bokeh提供了丰富的交互性选项,使用户能够在图表上进行缩放、平移、选择数据点等操作。

  • 现代化的外观 :Bokeh的图表外观非常现代化和吸引人,可以定制颜色、线条样式等。

  • 多种输出格式 :Bokeh支持多种输出格式,包括HTML、Jupyter Notebook、交互式应用程序等。

  • 无需前端开发经验 :使用Bokeh,不需要具备前端开发的经验,就可以创建交互式的Web可视化。

  • 支持大数据集 :Bokeh能够有效地处理大数据集,因此适用于各种规模的数据分析任务。

安装Bokeh

要开始使用Bokeh,首先需要安装它。可以使用pip来安装Bokeh:

pip install bokeh

安装完成后,就可以在Python代码中导入Bokeh并开始使用它。

基本用法

创建简单的图表

一个简单的示例开始,创建一个基本的折线图:

from bokeh.plotting import figure, output_file, show

# 创建一个输出HTML文件
output_file("simple_line_chart.html")

# 创建一个图表对象
p = figure(title="Simple Line Chart", x_axis_label="X-axis", y_axis_label="Y-axis")

# 添加数据点
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]

# 绘制折线
p.line(x, y, line_width=2)

# 显示图表
show(p)

在这个示例中,首先创建一个输出HTML文件,然后创建一个图表对象( p )。接下来,定义了X和Y轴的数据点,并使用 p.line 方法绘制了折线。最后,使用 show 函数来显示图表。

添加交互性

Bokeh的一个强大之处在于它的交互性。

一个添加交互性的示例:

from bokeh.plotting import figure, output_file, show
from bokeh.models import HoverTool

# 创建一个输出HTML文件
output_file("interactive_line_chart.html")

# 创建一个图表对象
p = figure(title="Interactive Line Chart", x_axis_label="X-axis", y_axis_label="Y-axis")

# 添加数据点
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]

# 绘制折线
line = p.line(x, y, line_width=2)

# 添加悬停工具
hover = HoverTool()
hover.tooltips = [("X", "@x"), ("Y", "@y")]
p.add_tools(hover)

# 显示图表
show(p)

在这个示例中,添加了一个悬停工具( HoverTool ),当鼠标悬停在数据点上时,会显示X和Y的值。这增加了图表的交互性,使用户能够查看数据的详细信息。

绘制多个图表

Bokeh还可以绘制多个图表并将它们组合在一起。

以下是一个示例,演示如何创建一个包含多个子图表的布局:

from bokeh.plotting import figure, output_file, show
from bokeh.layouts import gridplot

# 创建一个输出HTML文件
output_file("multiple_subplots.html")

# 创建多个图表对象
p1 = figure(title="Subplot 1")
p2 = figure(title="Subplot 2")
p3 = figure(title="Subplot 3")
p4 = figure(title="Subplot 4")

# 添加数据点
x = [1, 2, 3, 4, 5]
y1 = [6, 7, 2, 4, 5]
y2 = [5, 4, 3, 2, 1]
y3 = [1, 2, 1, 2, 1]
y4 = [3, 2, 4, 1, 5]

# 绘制子图表
p1.line(x, y1)
p2.line(x, y2)
p3.line(x, y3)
p4.line(x, y4)

# 创建一个子图表布局
layout = gridplot([[p1, p2], [p3, p4]])

# 显示图表
show(layout)

在这个示例中,创建了四个子图表( p1 p2 p3 p4 ),然后使用 gridplot 将它们组合成一个2x2的布局。最后,使用 show 函数来显示整个布局。

高级用法

绘制3D图形

Bokeh不仅支持2D图形,还支持绘制3D图形。要绘制3D图形,可以使用Bokeh的 figure 模块中的 figure() 函数并指定 output_backend='webgl' 参数来启用WebGL渲染。然后,可以使用3D绘图方法,如 line3d() scatter3d() 来创建3D图形。

from bokeh.plotting import figure, output_file, show

# 创建一个输出HTML文件
output_file("3d_plot.html")

# 创建3D图表对象
p = figure(title="3D Plot", output_backend='webgl')

# 添加数据点
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]
z = [3, 2, 4, 1, 5]

# 绘制3D散点图
p.scatter3d(x, y, z, size=10)

# 显示图表
show(p)

创建交互式小部件

Bokeh支持创建交互式小部件,这些小部件可以让用户与图表进行互动。例如,可以创建一个滑块小部件,用于动态调整图表中的参数,或创建一个复选框小部件,用于切换不同的数据视图。

from bokeh.plotting import figure, curdoc
from bokeh.models import Slider

# 创建一个图表对象
p = figure(title="Interactive Plot", x_axis_label="X-axis", y_axis_label="Y-axis")

# 添加数据点
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]

# 绘制折线
line = p.line(x, y, line_width=2)

# 创建一个滑块小部件
slider = Slider(start=0.1, end=2, step=0.1, value=1, title="Line Width")

# 定义滑块变化时的回调函数
def update_line_width(attr, old_value, new_value):
    line.line_width = new_value

# 将回调函数与滑块小部件绑定
slider.on_change('value', update_line_width)

# 将图表和滑块小部件放入文档
curdoc().add_root(p)
curdoc().add_root(slider)

这个示例中,创建了一个滑块小部件,并定义了一个回调函数,当滑块的值变化时,会更新图表的折线宽度。

嵌入Bokeh图表到Flask应用程序

可以将Bokeh图表嵌入到Web应用程序中,例如使用Flask框架。首先,需要创建一个Flask应用程序,并使用Bokeh的 components() 函数将图表组件嵌入到HTML模板中。

from flask import Flask, render_template
from bokeh.plotting import figure
from bokeh.embed import components

app = Flask(__name__)

@app.route('/')
def index():
    # 创建一个图表对象
    p = figure(title="Embedded Bokeh Plot")
    
    # 添加数据点
    x = [1, 2, 3, 4, 5]
    y = [6, 7, 2, 4, 5]
    
    # 绘制折线
    p.line(x, y, line_width=2)
    
    # 将图表组件嵌入到HTML模板中
    script, div = components(p)
    
    return render_template('index.html', script=script, div=div)

if __name__ == '__main__':
    app.run()

在上述示例中,创建了一个Flask应用程序,定义了一个路由处理函数,将Bokeh图表组件嵌入到HTML模板中,并在浏览器中渲染。

总结

Bokeh是一个功能丰富的Python库,用于创建交互式和现代化的数据可视化。无论是进行数据分析、报告生成还是构建Web应用程序,Bokeh都是一个强大的工具。希望本文的介绍和示例有助于大家入门Bokeh,并开始在Python项目中创建引人注目的数据可视化。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

bokeh,一个超强的 Python 库详解 的相关文章

随机推荐

  • Mybatis Plus 条件构造器的简单介绍 以及IService 的简单使用

    文章目录 Mybatis Plus 条件构造器 LambdaWrapper 自定义SQL Service接口 Mybatis Plus 条件构造器 简单案例演示 特殊案例更新
  • 如何查找iPhone中所有的应用程序

    Apple 的 App Store 共有约 200 万个适用于 iPhone 和 iPad 的应用程序 如果您像我们一样 您的 iOS 或 iPadOS 设备上可能有数十个应用程序 但没有机会将它们全部整理好 您很容易忘记主屏幕上应用程序图
  • 【深度学习】从huggingface上加载数据集到本地并保存为csv文件

    场景 想从huggingface上下载yelp数据集 并以csv格式保存到本地 方法 1 git clone 首先通过git在线下载数据集的相关配置文件 git代理配置参考 链接 终端上执行如下命令 1 git clone https hu
  • Js实现Web端录音播放上传下载功能

    1 新建recorder js js audio recorder js audio recorder plugin version v1 0 3 homepage https github com 2fps recorder author
  • 浩鲸科技:为什么要用雪花ID替代数据库自增ID?(转载)

    浩鲸科技的面试题如下 其他面试题相对来说比较简单 大部人题目都可以在我的网站上 www javacn site 找到答案 这里就不再赘述 咱们今天只聊 为什么要使用雪花 ID 替代数据库自增 ID 这个问题 1 什么是雪花 ID 雪花 ID
  • 卷积神经网络:专门用于图像和语音处理的深度学习模型

    随着人工智能技术的发展和应用 深度学习模型在图像和语音处理领域中扮演着越来越重要的角色 其中 卷积神经网络 Convolutional Neural Network 简称CNN 是一种专门用于图像和语音处理的深度学习模型 本文将介绍卷积神经
  • 一体化运维方案:摄像头故障监控与网络设备监控

    一 引言 随着企业信息化的快速发展 摄像头和网络设备在各行各业得到了广泛应用 然而 随着设备数量的增加和系统复杂度的提升 摄像头故障监控和网络设备监控成为了一个重要的挑战 为了提高运维效率和管理水平 我们提出了一体化运维方案 整合摄像头故障
  • 企业数据存储监控

    随着组织及其网络基础架构的不断扩展 存储将不可避免地成为一项挑战 随着存储需求的增长 调配更多存储资源的需求也会随之增长 为基础架构配置了更多存储资源后 它们需要不间断地运行 并且应该免受威胁 从本质上讲 IT 运营团队在企业存储管理方面的
  • 解决华为云开放的端口调不通的问题,以18888端口为例

    1 查看监听的端口 netstat ntlp 可以看到nginx等进程正在监听的端口 这些接口都需要通过华为云安全组以及防火墙同时开启接口才能生效 2 查看防火墙是否开启 firewall cmd state 如果没开启 记得开启 syst
  • DIY 云成本优化的5大挑战

    外星人 黑暗骑士 帝国反击战 在 Incredibuild 如果有一样东西我们喜欢 那就是我们的话题永远有续集 我们将针对云端优化推出一个更深入的续集 但这一次我们谈论的是云成本优化 采用 DIY 的方式 如果你还不确定什么是云端优化 请查
  • 民安智库(第三方满意度调研公司):满意度调查,选择适合的数据分析方法

    满意度调查是企业了解客户对其产品或服务满意程度的重要工具 而选择适合的数据分析方法则是解读调查结果的关键步骤 不同的数据分析方法可以提供不同的洞察和见解 帮助企业更好地理解客户需求 优化产品和服务 本文将分享民安智库 北京第三方绩效管理评估
  • 最佳的10款App安全测试工具

    移动互联网时代 我们的生活和工作深受 App 影响 伴随移动 App 的广泛应用 App 安全日益重要 本文介绍了 App 开发可能用到的安全测试工具 当今 全球移动用户大约超过37亿 Google Play 上大约有 220 万个 App
  • Qt 连接 Mysql

    Linux下安装mysql及qt连接 liunx下安装mysql及qt链接 CSDN博客
  • 服务器经常出现自动重启怎么办

    服务器自动重启是一个复杂且常见的问题 可能由多种原因引起 从硬件故障到软件问题 从电源问题到散热问题 每一个环节都可能成为服务器的杀手 在处理此类问题时 需要我们有一套完整的策略和方案 以便快速准确地定位并解决问题 1 硬件检查 首先 我们
  • 医疗保健科技公司遭遇网络攻击,预计影响 450 万客户

    Bleeping Computer 网站消息 美国医疗保健技术公司 HealthEC LLC 遭遇一次严重网络安全事件 约 450 万客户的敏感信息被泄露 这一数字占据了其注册会员的一半以上 HealthEC 提供的人口健康管理 PHM 平
  • Linux 命令之 dpkg 的简单使用

    查询已安装的软件包及其依赖关系 dpkg s name
  • CMake中引入第三方库

    CMake中 如果我们需要引入第三方库 首先想到的是用find package函数 的确 如果我们引入的第三方库是一些比较标准的库如OpenCV可以用下面的代码 set OpenCV DIR xxxx xxxx目录包含OpenCVConfi
  • 软件测试开发/全日制丨Web端测试—JavaScript讲解 学习笔记

    本文转自测试人社区 霍格沃兹测试开发学社学员笔记 原文链接 https ceshiren com t topic 29440 一 简介 JavaScript 是脚本语言 一种轻量级的编程语言 是可插入 HTML 页面的编程代码 插入 HTM
  • 思科认证 | CCIE在线学习平台推荐!

    CCIE作为思科认证的 最高级别 备受网络专业人士推崇 那么CCIE认证 难不难 想要学习思科认证 是否有在线学习平台可以推荐 如果拿到了CCIE证书 证书会不会过期 如果会 是否有重认证的必要 01 CCIE网络工程师考试难吗 CCIE考
  • bokeh,一个超强的 Python 库详解

    概要 数据可视化在数据分析和报告中扮演着关键角色 而Python的Bokeh库为创建交互式 具有吸引力的可视化图表提供了强大的工具 本文将介绍Bokeh的基本概念 安装方法以及详细的示例代码 以帮助大家了解如何使用Bokeh创建出色的数据可