当前位置: 首页 > 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,您可以轻松追踪代码变更、管理不同版本,并与其他开发…...

mysql数据库(五)多表查询

多表查询 文章目录 多表查询一、链表查询1.1交叉连接1.2 内连接1.3 左连接1.4 右连接1.5 全连接1.6 例子 二、子查询2.1 in与not in2.2 any/some2.3 all2.4 比较运算符2.5 exists 三、例子 查询中使用的表如下所示 ------------ | id | name | ------------ | 1 | IT | …...

【go从零单排】JSON序列化和反序列化

🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 在 Go 语言中,处理 JSON 数据主要依赖于 encoding/json 包。这个包提…...

海外携程机票token 1001分析

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 有相关问题请第一时间头像私信联系我删…...

【算法】——二分查找合集

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 零:二分查找工具 1:最基础模版 2:mid落点问题 一:最…...

社会工程骗局席卷金融机构

2024 年北美金融机构收到的社交工程诈骗报告数量比一年前增加了 10 倍。数据显示,诈骗现在占所有数字银行欺诈的 23%。 深度伪造和 GenAI 诈骗的危险日益增加 BioCatch 在其 2024 年北美数字银行欺诈趋势报告中公布了这些发现,该报告还详细说明了报告的…...

前缀和算法习题篇(上)

1.一维前缀和 题目描述: 解法一:暴力解法:模拟 时间复杂度是O(n*q),会超时。 解法二:前缀和解法:快速求出数组中某一个连续区间的和 快速是指O(1),前缀和思想可把时间复杂度可降到O(q)。 算法思路: 先预处…...

C#核心(9)静态类和静态构造函数

前言 我们先前已经了解了静态成员的基本构成,也简单了解了一下静态变量,现在我们就要来看一下静态类和静态构造函数了,这些其实在上一节我已经在例子里有提到过,相信聪明的你甚至已经发现了一些规律。 GPT对c#中静态类和静态构造…...

B2002 Hello,World! C++实现

Hello,World! 题目描述 编写一个能够输出 Hello,World! 的程序。 提示&#xff1a; 使用英文标点符号&#xff1b;Hello,World! 逗号后面没有空格。H 和 W 为大写字母。 输入格式 输出格式 样例 #1 样例输入 #1 无样例输出 #1 Hello,World!#include <bits/stdc.h&…...

前端-同源与跨域

一、同源策略 两个网站协议名、域名、端口号有一个不同就是非同源&#xff0c;就是跨域。跨域问题就是浏览器的同源策略造成的。 同源是指协议名、域名、端口号 必须完全一致&#xff01; http 默认端口号是80&#xff0c;https 默认端口号是443 同源策略的限制 一般来说&…...

MySQL远程连接错误解决:Host is not allowed to connect to this MySQL server

1. 异常错误 通过远程客户端访问MySQL服务器时会遇到“Host is not allowed to connect to this MySQL server”的错误提示。 2. 原因 MySQL服务器当前配置不允许来自特定主机的连接尝试。 3. 解决方法 允许远程主机访问MySQL服务器&#xff0c;按照以下步骤操作&#xff…...