Python Bokeh 数据可视化教程
Python Bokeh 数据可视化教程
引言
在数据科学和分析的过程中,数据可视化是一个至关重要的环节。它不仅能帮助我们更好地理解数据,还能在报告和展示中提升数据的可读性和吸引力。Python 作为数据科学的主要工具之一,提供了多种数据可视化库,其中 Bokeh 是一个强大的库,专注于创建交互式、可嵌入的可视化图表。本文将深入探讨 Bokeh 的使用,包括基本概念、常见图表类型、样式定制以及与 Pandas 数据框的结合使用,帮助你快速掌握 Bokeh 的使用技巧。
1. 安装 Bokeh
在开始之前,确保你已经安装了 Bokeh。如果没有安装,可以使用以下命令进行安装:
pip install bokeh
2. 导入库
在使用 Bokeh 之前,我们需要导入必要的库。通常情况下,我们还会使用 Pandas 来处理数据:
from bokeh.plotting import figure, show, output_notebook
from bokeh.io import push_notebook
import pandas as pd
2.1 设置输出方式
如果你在 Jupyter Notebook 环境中工作,可以使用以下命令设置输出为 Notebook:
output_notebook()
3. Bokeh 的基本结构
Bokeh 的核心是图形对象(figure)和绘制方法。我们可以创建各种类型的图表,并通过设置属性来自定义样式。
3.1 创建基本图表
以下是一个创建简单散点图的示例:
# 创建数据
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]# 创建图形对象
p = figure(title="Simple Scatter Plot", x_axis_label='X-Axis', y_axis_label='Y-Axis')# 添加散点
p.circle(x, y, size=10, color="navy", alpha=0.5)# 显示图表
show(p)

4. 常见图表类型
Bokeh 支持多种类型的图表,以下是一些常见图表的示例。
4.1 散点图(Scatter Plot)
散点图用于显示两个变量之间的关系。以下是一个使用 Bokeh 绘制散点图的示例:
# 创建示例数据
df = pd.DataFrame({'x': [1, 2, 3, 4, 5],'y': [6, 7, 2, 4, 5],'color': ['red', 'green', 'blue', 'orange', 'purple']
})# 创建图形对象
p = figure(title="Scatter Plot Example", x_axis_label='X-Axis', y_axis_label='Y-Axis')# 添加散点
p.circle(df['x'], df['y'], size=10, color=df['color'], alpha=0.6)# 显示图表
show(p)
4.2 线图(Line Chart)
线图用于显示数据随时间变化的趋势。以下是一个使用 Bokeh 绘制线图的示例:
# 创建示例数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]# 创建图形对象
p = figure(title="Line Chart Example", x_axis_label='X-Axis', y_axis_label='Y-Axis')# 添加线
p.line(x, y, line_width=2, color="green")# 显示图表
show(p)

4.3 条形图(Bar Chart)
条形图用于比较不同类别的数值。以下是一个使用 Bokeh 绘制条形图的示例:
# 创建示例数据
categories = ['A', 'B', 'C', 'D']
values = [10, 20, 15, 25]# 创建图形对象
p = figure(x_range=categories, title="Bar Chart Example", x_axis_label='Categories', y_axis_label='Values')# 添加条形
p.vbar(x=categories, top=values, width=0.9)# 显示图表
show(p)

4.4 饼图(Pie Chart)
虽然 Bokeh 不直接支持饼图,但我们可以使用其他方法绘制饼图。以下是一个使用 Bokeh 绘制饼图的示例:
from math import pi# 创建示例数据
data = pd.Series([10, 20, 30, 40], index=['A', 'B', 'C', 'D'])# 计算角度
angles = data / data.sum() * 2 * pi# 创建图形对象
p = figure(title="Pie Chart Example", plot_height=350, plot_width=350)# 添加饼图
p.wedge(x=0, y=1, radius=0.4, start_angle=cumsum(angles).shift(fill_value=0), end_angle=cumsum(angles),line_color="white", fill_color=Category10[len(data)])# 显示图表
show(p)
4.5 热力图(Heatmap)
热力图用于展示数据的矩阵形式,常用于相关性分析。以下是一个使用 Bokeh 绘制热力图的示例:
import numpy as np# 创建示例数据
data = np.random.rand(10, 10)# 创建图形对象
p = figure(title="Heatmap Example", x_axis_label='X-Axis', y_axis_label='Y-Axis')# 添加热力图
p.rect(x, y, width=1, height=1, source=ColumnDataSource(data=data), line_color=None, fill_color=transform('value', LinearColorMapper(palette=Viridis256, low=0, high=1)))# 显示图表
show(p)
5. 样式定制
Bokeh 提供了多种样式和主题,可以帮助我们美化图表。我们可以通过设置属性来自定义图表的外观。
5.1 修改图表标题和轴标签
可以通过 title 和 x_axis_label、y_axis_label 属性来修改图表的标题和轴标签:
p.title.text = "Customized Scatter Plot"
p.xaxis.axis_label = "Custom X-Axis"
p.yaxis.axis_label = "Custom Y-Axis"
5.2 修改颜色和样式
我们可以通过设置图形的颜色、大小、透明度等属性来定制样式。例如,改变散点图的大小和颜色:
p.circle(df['x'], df['y'], size=15, color="orange", alpha=0.8)
6. 与 Pandas 数据框结合使用
Bokeh 与 Pandas 数据框的结合使用使得数据处理和可视化变得更加方便。我们可以直接使用 Pandas 数据框作为 Bokeh 的数据源。
示例:使用 Pandas 和 Bokeh 绘制图表
下面是一个示例,展示如何使用 Pandas 数据框和 Bokeh 绘制图表:
# 创建一个示例数据框
data = {'Category': ['A', 'B', 'C', 'D'],'Values': [10, 20, 15, 25]
}
df = pd.DataFrame(data)# 使用 Bokeh 绘制条形图
p = figure(x_range=df['Category'], title="Bar Chart of Values by Category", x_axis_label='Categories', y_axis_label='Values')
p.vbar(x=df['Category'], top=df['Values'], width=0.9)# 显示图表
show(p)
7. 进阶用法
7.1 Bokeh Server
Bokeh Server 提供了一种创建交互式 Web 应用的方式。通过 Bokeh Server,我们可以将 Bokeh 图表嵌入到 Web 应用中,实现数据的动态交互。以下是一个简单的 Bokeh Server 示例:
from bokeh.io import curdoc
from bokeh.models import ColumnDataSource
from bokeh.plotting import figure# 创建数据源
source = ColumnDataSource(data=dict(x=[], y=[]))# 创建图形对象
p = figure(title="Bokeh Server Example", x_axis_label='X-Axis', y_axis_label='Y-Axis')# 添加散点
p.circle('x', 'y', source=source)# 更新数据的回调函数
def update():new_data = dict(x=[1, 2, 3], y=[4, 5, 6])source.data = new_data# 定时更新
curdoc().add_periodic_callback(update, 1000)# 显示图表
show(p)
7.2 动态交互
Bokeh 支持多种交互功能,例如滑块、下拉菜单等。以下是一个使用滑块实现动态交互的示例:
from bokeh.layouts import column
from bokeh.models import Slider# 创建图形对象
p = figure(title="Dynamic Interaction Example", x_axis_label='X-Axis', y_axis_label='Y-Axis')# 添加散点
scatter = p.circle(x, y, size=10, color="navy", alpha=0.5)# 创建滑块
slider = Slider(start=1, end=10, value=5, step=1, title="Size")# 更新散点大小的回调函数
def update_size(attr, old, new):scatter.size = new# 监听滑块的变化
slider.on_change('value', update_size)# 布局
layout = column(slider, p)# 显示图表
show(layout)
8. 结论
Bokeh 是一个强大的数据可视化库,能够帮助我们轻松地创建美观的交互式图表。通过本教程,我们学习了 Bokeh 的基本用法、常见图表类型、样式定制以及与 Pandas 数据框的结合使用。希望这些内容能够帮助你在数据分析中更好地利用 Bokeh 进行可视化。
参考资料
- Bokeh 官方文档
- Pandas 官方文档
- Bokeh Server 文档
如有任何问题或想法,请在评论区留言!通过不断学习和实践,你将能够更好地掌握 Bokeh 的使用技巧,为数据分析增添色彩。
相关文章:
Python Bokeh 数据可视化教程
Python Bokeh 数据可视化教程 引言 在数据科学和分析的过程中,数据可视化是一个至关重要的环节。它不仅能帮助我们更好地理解数据,还能在报告和展示中提升数据的可读性和吸引力。Python 作为数据科学的主要工具之一,提供了多种数据可视化库…...
(一)<江科大STM32>——软件环境搭建+新建工程步骤
一、软件环境搭建 (1)安装 Keil5 MDK 文件路径:江科大stm32入门教程资料/Keil5 MDK/MDK524a.EXE,安装即可,路径不能有中文。 (2)安装器件支持包 文件路径:江科大stm32入门教程资料…...
内存大小的单位转换
计算机中内存大小的单位转换通常是按照以下规则进行的: 基本单位 1 字节 (Byte) 8 位 (bit) 常见的内存单位及转换关系 1 字节 (Byte) 8 位 (bit)1 千字节 (KB) 1,024 字节 (B)1 兆字节 (MB) 1,024 千字节 (KB) 1,024 * 1,024 字节 (B)1 吉字节 (GB) 1,02…...
如何在 Spring MVC 中使用 `@PostMapping`? 如何在 Spring MVC 中使用 `@PutMapping`?
PostMapping 和 PutMapping 是 Spring MVC 中用于处理 HTTP POST 和 PUT 请求的注解。它们分别对应 HTTP 协议中的 POST 和 PUT 方法,通常用于创建和更新资源。下面详细解释如何在 Spring MVC 中使用这两个注解。 1. 使用 PostMapping PostMapping 注解用于处理 H…...
AIGC Agent(智能体)应用开发高级工程师实战培训 —— 线上8周系统教学课程学习路线图
🎯 课程目标 系统掌握AIGC核心技术:学员将通过项目驱动学习,从文本生成、图像创意到智能体开发,全面进阶AIGC技术,探索其在营销、教育、数据处理、知识管理等领域的实际应用。构建AIGC智能体服务体系:学成…...
GDSC、CTRP数据库学习
GDSC 写在前面下载数据疑问1.GDSC、CTRP数据里有TCGA配套的数据?数据类型?CTRP原始数据如何处理 写在前面 开此贴做GDSC的数据分析记录 下载数据 GDSC官网:http://www.cancerrxgene.org/ 由于在官网下载数据过于麻烦,于是我使用…...
【嵌入式】ESP32开发(一)ESP-IDF概述
文章目录 1 前言2 IDF环境配置3 在VS Code中使用IDF3.1 使用ESP-IDF例程3.2 底部按钮的作用【重要!】3.3 高级用法4 ESP-IDF框架分析5 从零开始创建一个项目5.1 组件(component)6 主要参考资料7 遇到的一些问题与解决办法8 对于ESP-IDF开发的一些感受1 前言 对于ESP32的开发…...
最新6.7分非肿瘤纯生信,使用机器学习筛选慢阻肺中的关键基因。机器学习在非肿瘤生信文章中正火,可重复!
关于非肿瘤生信,我们也解读过很多,主要有以下类型 1 单个疾病WGCNAPPI分析筛选hub基因。 2 单个疾病结合免疫浸润,铁死亡,自噬等基因集,机器学习算法等。 3 两种相关疾病联合分析,包括非肿瘤结合非肿瘤&…...
vue 提交表单抹除字段为空的数据
使用背景 在配合后端post请求接口的时候 仅需要将有值的字段传入接口中 关键代码 cleanDataObj(obj) {Object.keys(obj).forEach((key) > {if (obj[key] ) {delete obj[key]}})},demo如下 export default {data() {return {demoObject:{name:小花,sex:,hobb…...
web实验3:虚拟主机基于不同端口、目录、IP、域名访问不同页面
创建配置文件: 创建那几个目录及文件,并且写内容: 为网卡ens160添加一个 IPv4 地址192.168.234.199/24: 再重新激活一下网卡ens160: 重启服务: 关闭防火墙、改宽松模式: 查看nginx端口监听情况:…...
英伟达Isaac Manipulator产品体验
相关配置 Isaac Manipulator3.1.0Isaac Sim4.2.0Ubuntu20.04GPURTX 4090 LaptopCPUI9 13900HXMem64GB 过程记录与反馈 GPU加速效果 请描述您在使用Isaac Manipulator时,调用cuMotion加速库来进行机器人运动规划和轨迹优化等任务的步骤和过程,并记录任…...
网安加·百家讲坛 | 仝辉:金融机构鸿蒙应用安全合规建设方案
作者简介:仝辉,北京娜迦信息科技发展有限公司攻防安全负责人,深耕移动应用安全领域十余年,获得过CISP、CISSP、OSCP、PMP、CCRC-CIASW等相关证书,参与多项移动应用安全标准起草,参与华为、平安集团、中国移…...
PHP Session
PHP Session PHP Session 是一种在 PHP 中用于跟踪用户会话的技术。会话允许在用户浏览网站时存储和访问用户信息。本文将详细介绍 PHP Session 的工作原理、如何创建和销毁会话、会话的安全性和最佳实践。 什么是 PHP Session? 在 Web 开发中,HTTP 是一种无状态的协议,这…...
泷羽sec学习打卡-Linux基础2
声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于Linux的那些事儿-Base2 一、Linux-Base2linux有哪些目录呢?不同目录下有哪些具体的文件呢…...
# 【STM32F1】——无线收发模块RF200与串口通信
【STM32F1】——无线收发模块RF200与串口通信 一、简介 本篇主要对调试无线收发模块RF200的过程进行总结,实现了以下功能。 串口普通收发:使用STM32F103C8T6的USART2串口接收中断,实现两个无线收发模块RF200间的通信。二、RF200介绍 电压:3.4-5.5V工作频率:418~455MHz发…...
计算机网络:运输层 —— TCP 协议概述与 TCP 报文段首部格式
文章目录 基本概念主要特点和功能TCP报文段的首部格式字段标志位扩展首部 传输控制协议(Transmission Control Protocol,TCP)协议是互联网上最常用的传输层协议之一,它负责提供可靠的端到端数据传输服务。TCP 协议采用连接导向的通…...
python正则表达式和递归
一、正则表达式 1.基础匹配 学习目标:了解什么是正则表达式,掌握re模块的基础使用 就是一种规则的定义,通过规则去验证给定的目标是否符合定义的规则。 正则的三个基础方法 match match是匹配开头,开头有python就算匹配成功&a…...
JAVA后端生成图片滑块验证码 springboot+js完整案例
前言 现在大部分网部都是图片滑块验证码,这个得要与后端联动起来才是确保接口安全性 通过我们系统在发送手机短息时都会选进行滑块验证,但是我们要保证发送短息接口的全安,具体路思如下 那么这个滑块的必须是与后端交互才能保证安全性&…...
Spring Boot中的自动装配机制
文章目录 1. 什么是自动装配?2. 自动装配是如何工作的?3. 如何开启自动装配?4. 自动装配的注意事项5. 结语推荐阅读文章 在Spring Boot的世界里,自动装配(Auto-configuration)就像春风拂面,轻轻…...
Brave127编译指南 Windows篇:配置Git(四)
1. 概述 在Brave浏览器的开发过程中,Git作为核心版本控制工具扮演着不可或缺的角色。作为当今最广泛使用的分布式版本控制系统,Git为开发者提供了强大的源码管理能力。通过Git,您可以轻松追踪代码变更、管理不同版本,并与其他开发…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...
