使用Bokeh进行数据可视化的8个建议(上)

news2025/1/21 9:34:48

使用 Bokeh 库创建数据可视化的快速提示和示例。

长按关注《Python学研大本营》,加入读者群,分享更多精彩 扫码关注《Python学研大本营》,加入读者群,分享更多精彩

Python 是创建数据可视化的绝佳开源工具。有许多可用的数据可视化库,包括 Matplotlib、Seaborn 和 Bokeh。

Bokeh 是一个 Python 数据可视化库,旨在创建交互式图表。虽然可以免费使用,但通常需要大量时间来了解具体细节。

以下是我在使用 Bokeh 创建数据可视化过程中学到的一些技巧。

注意:显示的所有示例,包括代码和数据集,均可在此处获得。

https://payalnpatel.github.io/Bokeh/

1 — 格式化图表标题、轴标题和轴标签以便于阅读

格式良好的标题和标签可以提高图表的可读性和可用性。易于阅读的标题、标签和轴允许用户快速查看和处理可视化。

在设计数据可视化时,务必牢记标题和标签的格式,包括字体粗细、字体大小和字体颜色。

例如,下面的条形图按经验水平显示了数据科学专业人员的平均工资。此可视化使用标题和标签的默认值。

图片:带有默认标题和轴标签的条形图

更改默认设置可以增强数据可视化。以下是我在使用 Bokeh 格式化图表标题和轴时使用的一些技巧。

  • Bold Chart & Axis Titles — 大胆的标题使它们脱颖而出。这使用户更容易快速找到识别信息。

  • 居中图表标题— 默认情况下,图表标题左对齐。将标题居中以平衡可视化与对称元素。

  • 增加图表和轴标题的字体 - 增加标题的字体大小,使它们更易于阅读。确保轴标题小于图表标题,这样它们就不会盖过图表。

  • 设置轴范围— 默认情况下,轴不从 0 开始。正如我们在上面的示例中看到的那样,这会导致条形看起来漂浮在 x 轴之外。要格式化 x 或 y 轴的范围,请使用Range1d函数。

  • 使用刻度格式化程序 修改轴标签——Bokeh包含多个刻度格式化程序,例如NumeralTickFormatter和CategoricalTickFormatter。这些刻度格式化程序可以更改 x 和 y 轴刻度标签的格式。在上面的例子中,NumeralTickFormatter可以去除y 轴的科学计数格式。查看 Bokeh 文档以查看适用于您的版本的格式化程序。

  • 使用自定义标签覆盖轴标签- 当标签包含数千、数百万等大量数字时,自定义会有所帮助。使用自定义标签创建别名或速记。即,如果标签显示值“1,000,000”,自定义标签可以将显示更改为“1M”以便于阅读。 下图显示了应用这些技术后的条形图。虽然变化很小,但它们提高了图表的可读性和可用性。

图片:带有修改后的标题和标签的条形图

2 — 创建交互式图例

图例为数据可视化提供了有用的上下文,使用户能够快速识别相似的数据点——无论是通过颜色、形状还是大小。使用 Python 中的 Bokeh 库,用户可以创建交互式图例。交互式图例将部分数据隐藏或隐藏在视图之外。当有大量组或多个数据点重叠时,交互式图例很有用。

例如,下面的折线图显示了 2013 年到 2019 年因加州野火而按县烧毁的总英亩数。此折线图上有 6 个县,有几条重叠线。

图片:加州野火线图

创建交互式图例允许用户选择要从视图中删除的项目。通过将图形的click_policy设置为“隐藏”或“静音”,可以“隐藏”或“静音”项目,如下面的命令所示。

# Set Legend Click Policy for Figure 'p' 
p.legend.click_policy="mute"

我更喜欢将图例中的项目静音,因为静音的项目显示为灰色,而不是完全从视图中删除。通过这种方式,用户可以专注于他们想要的组,同时确保完整的数据集得到呈现。

注意:如果使项目静音,则应为绘制的每条线指定 muted_color 和 muted_alpha 字段。在此处查看此可视化的完整代码。

https://payalnpatel.github.io/Bokeh/

在 California Wildfires Line Graph 中,click_policy设置为“mute”,灰色作为muted_color,0.2 作为muted_alpha值。通过将特定县从视图中移除,用户能够更快速、更高效地比较较小范围内的县。例如,如果用户想要比较洛杉矶的野火和圣地亚哥的野火,这将很困难,因为有几条线重叠。在下图中,除洛杉矶和圣地亚哥之外的所有县都已静音,以便更轻松地比较这两个县之间燃烧的总英亩数。

图片:加州野火线图与选定县静音

交互式图例也可以应用于其他可视化。以下散点图显示了不同种族的学生数学和阅读分数之间的关系。添加交互式图例在这里有帮助,因为有几个重叠的数据点。要创建带有交互式图例的散点图,请单独绘制每个组。我们可以看到,通过将 A、B 和 C 组静音,我们可以轻松地比较 D 组和 E 组。在此处查看此数据可视化的完整代码。

https://payalnpatel.github.io/Bokeh/

图片:带有交互式图例的散点图

3 — 通过将图例放在图外来最大化空间

在 Python 中,许多数据可视化,例如折线图、散点图和条形图,都允许您使用简单的命令添加图例。用户通常会保留图例的默认位置,或者将图例移动到包含可视化的图形中的某个位置,例如左上角或右上角。虽然在大多数情况下这很好,但在某些情况下图例会覆盖可视化的关键区域。在下面按国家/地区划分的平均巧克力评级条形图中,默认的图例位置涵盖比利时和英国,因此很难确定一个是否大于另一个。

图片:带默认图例放置的条形图

如果可视化有多个数据点,或者如果向可视化添加图例导致覆盖关键信息,请将可视化放置在图的一侧。

图片:条形图,图例位于图的右侧 通过将图例移到框架之外,我们能够看到完整的可视化效果,同时将图例作为有用的参考。

要在图 p 的右侧添加图例,请使用以下命令。

p.add_layout(Legend(), ‘right’)

注意:要在 Bokeh 中使用图例功能,请导入以下函数。在此处查看此可视化的完整代码。

https://payalnpatel.github.io/Bokeh/

from bokeh.models import Legend
from bokeh.models import Range1d

4 — 添加工具提示

工具提示(通常称为悬停文本)是将光标移到可视化效果或可视化效果的一部分上时出现的文本。使用工具提示与观众分享额外信息。Bokeh 库允许将工具提示添加到多种可视化类型,包括条形图、折线图和散点图。

要将工具提示添加到可视化,请导入HoverTool函数,如下所示。

from bokeh.models.tools import HoverTool

以下面的条形图为例,按国家/地区划分的平均巧克力评级。此图表中的工具提示显示了光标悬停所在国家/地区的国家/地区名称和平均评级。

图片:启用工具提示的条形图

与格式化图表标题和标签类似,您还需要记住如何设置工具提示中文本的样式!

在下面的条形图中,Average Salary by Experience Level,工具提示包含有关以美元计算的经验水平和平均工资的信息。

图片:启用工具提示的条形图

默认情况下,平均工资文本不会自动格式化为货币;然而,通过一些修改,我们可以格式化文本以包含美元符号和逗号。创建数据可视化以格式化工具提示时添加了以下代码行。在此处查看此可视化的完整代码。

https://payalnpatel.github.io/Bokeh/

# Add hover text 
p.add_tools(HoverTool(tooltips=[(“Experience Level”, “@types”), 
 (“Average Salary (USD)”, “$@values{0,0}”)]))

工具提示还可以包含 x 和 y 轴之外的信息。以下散点图按性别显示了学生的数学和阅读成绩。此示例中的工具提示显示每个学生的性别、数学分数和阅读分数。

图片:启用工具提示的散点图

推荐书单

《PyTorch深度学习简明实战 》

本书针对深度学习及开源框架——PyTorch,采用简明的语言进行知识的讲解,注重实战。全书分为4篇,共19章。深度学习基础篇(第1章~第6章)包括PyTorch简介与安装、机器学习基础与线性回归、张量与数据类型、分类问题与多层感知器、多层感知器模型与模型训练、梯度下降法、反向传播算法与内置优化器。计算机视觉篇(第7章~第14章)包括计算机视觉与卷积神经网络、卷积入门实例、图像读取与模型保存、多分类问题与卷积模型的优化、迁移学习与数据增强、经典网络模型与特征提取、图像定位基础、图像语义分割。自然语言处理和序列篇(第15章~第17章)包括文本分类与词嵌入、循环神经网络与一维卷积神经网络、序列预测实例。生成对抗网络和目标检测篇(第18章~第19章)包括生成对抗网络、目标检测。

本书适合人工智能行业的软件工程师、对人工智能感兴趣的学生学习,同时也可作为深度学习的培训教程。

作者简介:

日月光华:网易云课堂资深讲师,经验丰富的数据科学家和深度学习算法工程师。擅长使用Python编程,编写爬虫并利用Python进行数据分析和可视化。对机器学习和深度学习有深入理解,熟悉常见的深度学习框架( PyTorch、TensorFlow)和模型,有丰富的深度学习、数据分析和爬虫等开发经验,著有畅销书《Python网络爬虫实例教程(视频讲解版)》。

链接:https://item.jd.com/13528847.html

精彩回顾

《Pandas1.x实例精解》新书抢先看!

【第1篇】利用Pandas操作DataFrame的列与行

【第2篇】Pandas如何对DataFrame排序和统计

【第3篇】Pandas如何使用DataFrame方法链

【第4篇】Pandas如何比较缺失值以及转置方向?

【第5篇】DataFrame如何玩转多样性数据

【第6篇】如何进行探索性数据分析?

【第7篇】使用Pandas处理分类数据

【第8篇】使用Pandas处理连续数据

【第9篇】使用Pandas比较连续值和连续列

【第10篇】如何比较分类值以及使用Pandas分析库

长按关注《Python学研大本营》

长按二维码,加入Python读者群

扫码关注《Python学研大本营》,加入读者群,分享更多精彩

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/151723.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaWeb:会话技术之Cookie

1,会话跟踪技术的概述 对于会话跟踪这四个词,我们需要拆开来进行解释,首先要理解什么是会话,然后再去理解什么是会话跟踪: 会话:用户打开浏览器,访问web服务器的资源,会话建立&…

设计模式-到底什么是builder模式

我们来看一个一些常见的开源代码中带builder字样的经典类:(jdk)Stringbuilder(spring)springApplicationBuilder(es)xxxQuerybulider如果只去看这些类的话,应该是一团乱码&#xff0…

【Kotlin】字符串操作 ① ( 截取字符串函数 substring | 拆分字符串函数 split | 解构语法特性 )

文章目录一、截取字符串函数 substring二、拆分字符串函数 split一、截取字符串函数 substring Kotlin 中提供了 截取字符串函数 substring , 可接收 IntRange 类型的参数 , 这是 整数范围 类型 ; 截取字符串函数 substring 函数原型为 : /*** 返回由给定的[range]索引指定的…

【pat】网红点打卡攻略【图】

一个旅游景点,如果被带火了的话,就被称为“网红点”。大家来网红点游玩,俗称“打卡”。在各个网红点打卡的快(省)乐(钱)方法称为“攻略”。你的任务就是从一大堆攻略中,找出那个能在…

【MyBatis】第一篇:初体验

还是老规矩看一下百度百科中的解释: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息&#xff0c…

Web(三)

JavaScript基础概念:一门客户端脚本语言* 运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎* 脚本语言:不需要编译,直接就可以被浏览器解析执行了功能:* 可以来增强用户和html页面的交互过程,可以来控制…

蓝桥杯C51

#include "reg52.h"sfr AUXR 0x8e; //定义辅助寄存器sbit S5 P3^2; //定义按键S5引脚 sbit S4 P3^3; //定义按键S4引脚unsigned char count 0; //定义中断计数器 unsigned char t_h 0; //定义运行时间的变量 unsigned char t_m 0; …

Struts2之OGNL表达式

Struts2之OGNL表达式1、什么是OGNL表达式2、OGNL表达式的作用3、值栈与OGNL3.1、值栈3.2、OGNL访问值栈4、类型转换4.1、类型转换的意义4.2、内置的类型转换器4.3、自定义类型转换器4.3.1、创建日期转换器4.3.2、配置转换器4.3.3、页面4.3.4、实体类和Action控制器4.3.5、strut…

从0到1完成一个Vue后台管理项目(七、Header、Footer、页面布局)

往期 从0到1完成一个Vue后台管理项目(一、创建项目) 从0到1完成一个Vue后台管理项目(二、使用element-ui) 从0到1完成一个Vue后台管理项目(三、使用SCSS/LESS,安装图标库) 从0到1完成一个Vu…

2010-2020年和讯网分行业社会责任指数

2010-2020年和讯网分行业社会责任指数 1、时间:2010-2020年 2、行业包括: 银行业(III)、人寿保险(III)、普通金融服务、工业运输、采矿业、饮料、不动产、食品与药品零售、电力(III&#xff…

JS字符串的截取出现的bug

前言 在js中我们对字符串进行一部分截取,可以使用slice()函数截取,也可以直接用substring()函数来截取,但是截取也有可能出bug const str小𠮷和小𧨁今天吃了50块钱的KFC console.log(str.slice(0,5)); 可以在控制台看…

ESP-IDF:数组为空异常处理例程

1.需要开启对ESP-IDF 中的 C 异常的支持。 默认情况下禁用对 ESP-IDF 中的 C 异常的支持,但可以使用 CONFIG_CXX_EXCEPTIONS 选项启用. 如果禁用对 ESP-IDF中的 C 异常的支持这样编译例程会报错: error: exception handling disabled, use -fexceptions to enable…

node.js中的文件读取写入操作

fs文件系统模块 什么是fs文件系统模块 fs模块是node.js官方提供的、操作文件的模块。通过fs模块可以实现对文件的读取以及写入操作。 例如: fs.readFile():用于读取指定文件的文件内容fs.writeFile():用于向指定的文件写入内容 引入fs模块&#xff…

[2023] NAND闪存及控制器的市场趋势

一、NAND闪存市场分析据欧洲知名半导体分析机构Yole发布的报告显示,2020年起,NAND闪存市场发展趋势保持稳定增长,2021年,NAND闪存市场份额达到了近670亿美元(见图1),同年,NAND闪存总…

使用 Vagrant 对 VirtualBox 虚拟机磁盘扩容

使用Vagrant 对 VirtualBox 磁盘扩容 Vagrant 下载地址: https://www.vagrantup.com/downloads.html Vagrant版本 2.3.4 VirtualBox版本:7.0.4 1、在初次使用 Vagrant init 创建 VirtualBox 虚拟机时,会创建一个 Vagrantfile 文件 2、在 Vagrantfile…

CAS:60842-46-8;葡聚糖-荧光素;Dextran-FITC

Dextran-FITC、葡聚糖-荧光素、(葡聚糖-FITC) CAS NO: 60842-46-8 英文名称:: Dextran(3,6dihydroxy-3-oxospiro(isobenzofuran-1(3H],9-[9H]xanthen]-5(or 6]-yl]carbamothioate, average Mw of approximately 分子量&#xf…

java 微服务之docker基础入门 docker部署 镜像相关命令 容器命令 数据卷 DockerCompose Docker镜像仓库

初识Docker 项目部署的问题 什么是Docker 不同环境的操作系统不同,Docker如何解决?我们先来了解下操作系统结构 Docker与虚拟机 虚拟机是在一个系统内,运行另外一个系统 镜像和容器 镜像(Image):Docker将…

基于STM32 STC15和SU-03T离线语音模块的智能语音自拍器设计

一. 系统设计及框图 现在的自拍系统有很多是蓝牙控制的,我们这次介绍的是使用语音控制的拍照系统。 本系统通过MCU产生20kHZ左右的频率驱动蜂鸣器(占空比为50%即可),手机APP收到此特定频率的信号后会执行相应的拍照或切换镜头的…

Spring 响应式编程,真香!!!

一、前言 响应式编程是啥?为啥要有响应式编程?响应式流的核心机制是什么?Spring 响应式编程能解决我们平时开发的什么痛点?Spring 响应式编程有哪些应用场景?Spring 响应式编程未来的趋势如何? 开篇六连问…

必要条件和充分条件与分析问题的方法

作为一名软件工程师,大部分的工作时间都是在解决各种问题中度过的,相信大部分的工程师都有类似的感受。这些问题发生在不同的技术领域,不同的技术方向,不同的模块,甚至不同的环境下,不一而足,就…