当前位置: 首页 > 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 的使用技巧,为数据分析增添色彩。

http://www.lryc.cn/news/483610.html

相关文章:

  • (一)<江科大STM32>——软件环境搭建+新建工程步骤
  • 内存大小的单位转换
  • 如何在 Spring MVC 中使用 `@PostMapping`? 如何在 Spring MVC 中使用 `@PutMapping`?
  • AIGC Agent(智能体)应用开发高级工程师实战培训 —— 线上8周系统教学课程学习路线图
  • GDSC、CTRP数据库学习
  • 【嵌入式】ESP32开发(一)ESP-IDF概述
  • 最新6.7分非肿瘤纯生信,使用机器学习筛选慢阻肺中的关键基因。机器学习在非肿瘤生信文章中正火,可重复!
  • vue 提交表单抹除字段为空的数据
  • web实验3:虚拟主机基于不同端口、目录、IP、域名访问不同页面
  • 英伟达Isaac Manipulator产品体验
  • 网安加·百家讲坛 | 仝辉:金融机构鸿蒙应用安全合规建设方案
  • PHP Session
  • 泷羽sec学习打卡-Linux基础2
  • # 【STM32F1】——无线收发模块RF200与串口通信
  • 计算机网络:运输层 —— TCP 协议概述与 TCP 报文段首部格式
  • python正则表达式和递归
  • JAVA后端生成图片滑块验证码 springboot+js完整案例
  • Spring Boot中的自动装配机制
  • Brave127编译指南 Windows篇:配置Git(四)
  • mysql数据库(五)多表查询
  • 【go从零单排】JSON序列化和反序列化
  • 海外携程机票token 1001分析
  • 【算法】——二分查找合集
  • 社会工程骗局席卷金融机构
  • 前缀和算法习题篇(上)
  • C#核心(9)静态类和静态构造函数
  • B2002 Hello,World! C++实现
  • 前端-同源与跨域
  • MySQL远程连接错误解决:Host is not allowed to connect to this MySQL server
  • 详解C语言字符和字符串的输入与输出