当前位置: 首页 > news >正文

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 修改图表标题和轴标签

可以通过 titlex_axis_labely_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,您可以轻松追踪代码变更、管理不同版本,并与其他开发…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

Go语言多线程问题

打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...

小木的算法日记-多叉树的递归/层序遍历

🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...

Java中栈的多种实现类详解

Java中栈的多种实现类详解:Stack、LinkedList与ArrayDeque全方位对比 前言一、Stack类——Java最早的栈实现1.1 Stack类简介1.2 常用方法1.3 优缺点分析 二、LinkedList类——灵活的双端链表2.1 LinkedList类简介2.2 常用方法2.3 优缺点分析 三、ArrayDeque类——高…...

Neo4j 完全指南:从入门到精通

第1章:Neo4j简介与图数据库基础 1.1 图数据库概述 传统关系型数据库与图数据库的对比图数据库的核心优势图数据库的应用场景 1.2 Neo4j的发展历史 Neo4j的起源与演进Neo4j的版本迭代Neo4j在图数据库领域的地位 1.3 图数据库的基本概念 节点(Node)与关系(Relat…...

软件工程教学评价

王海林老师您好。 您的《软件工程》课程成功地将宏观的理论与具体的实践相结合。上半学期的理论教学中,您通过丰富的实例,将“高内聚低耦合”、SOLID原则等抽象概念解释得十分透彻,让这些理论不再是停留在纸面的名词,而是可以指导…...