数据可视化工具 Bokeh

2024-03-01 03:20
文章标签 工具 数据 可视化 bokeh

本文主要是介绍数据可视化工具 Bokeh,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Bokeh 是一款 Python 生态中的数据可视化工具,它是东洋岛国程序员发明的。虽然已经有了很多数据可视化工具,但是 Bokeh 仍然能够有所创新,即使在雷同的功能上,它也能够做到极致,在这方面完全继承了岛国人民的做事风格。

本 Chat 的主要内容:

  1. Bokeh 的安装和基本介绍;
  2. 用 Bokeh 绘制常用统计图;
  3. 用 Bokeh 实现统计图的互动。

数据可视化

数据可视化,在现在非常重要。凭什么这么说?请参阅我在《案例上手 Python 数据可视化》中的详细说明,此处不赘述。

enter image description here

本 Chat 是选择了上述课程中的一部分,供有单独需要的朋友享用。

Bokeh 简介

岛国,在我朝的东边,我朝臣民对它的心态可以说比较复杂了。就软件领域而言,它的存在感貌似不大,其实不然。就拿国内的一些大厂,有不少其背后会有一家岛国公司身影——软银。岛国技术人员为开源领域的贡献,也同样精彩,比如很有名的 Ruby 语言,发明者为 Yukihiro Matsumoto,是一名岛国程序员。本章要介绍的Bokeh也是岛国程序员发明的,专用于数据可视化。

维基百科的词条 Bokeh 介绍了这个词的读音和含义,也可以不用理会什么含义,就当做一个名称罢了。

精彩一瞥

Bokeh 的最大特点是能够生成基于网页的可视化图示,并且也具有交互性。

起手要做的肯定是安装了。

pip3 install bokeh

这是最简单的安装方式,如果不能安装,可以直接从 github 上下载。

安装好之后,可以运行jupyter notebook,而后执行下面的程序,通过示例体验一下 Bokeh 的应用。

import numpy as npfrom bokeh.plotting import figure, output_file, show    # ①x = np.linspace(0, 2*np.pi, 50)y = np.sin(x)fig = figure(plot_width = 800, plot_height = 600,              title = 'sin line',              y_axis_label = 'y', x_axis_label = 'x')    # ②fig.line(x, y, line_width = 2, legend = 'sin')    # ③output_file('./sin.html')    # ④show(fig)    # ⑤

执行这段程序之后,会自动打开一个网页,并且网页文件的名称为“sin.html”。enter image description here

从上述结果来看,与 Plotly 和 Pyecharts 一样——关于这两个工具的介绍,请参阅我的课程,当然,应该也会有自己的特点,继续体会就能了解到。不过,还是先简要地理解一下上面的程序。

  • ①引入程序中需要的模块。
  • ②中使用figure创建一个图示实例对象,figure其实是Bokeh中的类Figure的简单封装,用于初始化图示对象,默认情况下会包含坐标系的坐标轴、坐标网格以及图示右侧的有关工具等。
  • ③调用了fig对象的一个方法fig.line,意即绘制曲线。
  • ④使用output_file设置输出文件名称,如果不写此句,Bokeh 会默认一个名称。
  • ⑤的效果则是要显示所绘制的图示对象。

Plotly 和 Pyecharts 都能将 HTML 中的图嵌入到当前正在运行的 Jupyter 浏览器中,Bokeh 有这个功能吗?

这个可以有!

from bokeh.io import output_notebookoutput_notebook()

引入output_notebook之后,执行output_notebook(),用它替代④。执行之后,结果如下图所示。

enter image description here

此后在执行第一段程序,则代码块之下就能插入图示对象。

除了能够绘制一条曲线之外,在同一个坐标系中绘制多条曲线也是很容易的事情。

from bokeh.plotting import figure, showx = [0.1, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0]y0 = [i**2 for i in x]y1 = [10**i for i in x]y2 = [10**(i**2) for i in x]p = figure(tools="pan,box_zoom,reset,save",    # ⑥           y_axis_type="log",            y_range=[0.001, 10**11],           title="多函数曲线",           x_axis_label='sections',            y_axis_label='particles',)p.line(x, x, legend="y=x")    # ⑦p.circle(x, x, legend="y=x", fill_color="white", size=8)    # ⑧p.line(x, y0, legend="y=x^2", line_width=3)p.line(x, y1, legend="y=10^x", line_color="red")p.square(x, y1, legend="y=10^x", fill_color="red", line_color="blue", size=10)    # ⑨p.line(x, y2, legend="y=10^x^2", line_color="orange", line_dash="4 4")show(p)

enter image description here

相对前面的示例,此示例做了更多的自定义。首先是在⑥创建图示实例的时候,使用的参数就比较多了:

  • tools="pan,box_zoom,reset,save":前面示例的图示右侧,默认把所有可以出现的工具都显示了出来,而这里仅仅显示指定的工具。
  • y_axis_type:设置Y轴的数据类型,同样的还有参数x_axis_type。默认值是'auto',此外还可以为'linear', 'datetime', 'log', 'mercatro'

⑦绘制y = x的曲线,这跟前面示例一样。⑧则是根据x的值以及函数y = x得到的y值,绘制相应的坐标“点”,只是这里的“点”的形状是“圆形”——用p.circle实现:

  • size:每个“点”的大小(直径)。
  • fill_color:每个“点”的填充色。

与⑧具有同样功能的是⑨,区别在于⑨把“点”绘制成了方形——p.square,其中的参数,可依据“望文生义”原则理解。

总览上述制图过程,如果在同一个图示对象中绘制多种图像,只需要使用该对象多次调用相应的制图方法即可。

基本要素

通过上面的两个示例,已经对Bokeh绘图有了初步感受,正如本章标题中所言“岛国薄纱”,对于学习者而言,因为有了前面使用各种工具的基础,再学习 Bokeh 就不困难了,它只不过是一层“薄纱”罢了,通过简单示例就已经能看到某些了——如果要深入,还需要继续研习,必须动手“拨云”,才能最终“见日”。

通常而言,Bokeh 制图的基本要素或者基本步骤为:

图示对象

前面的示例中已经显示,都是要先创建图示对象。bokeh.plotting中有创建图示图像的类Figure,并且还提供了相应的简化函数figure。创建图示对象常用参数如下:

  • tools:字符串。用于设置图示对象中提供的工具(称为“图示工具”)。默认值为'DEFAULT_TOOLS',前面示例中演示了设置为其他值的情况。此外,还可以通过toolbar_location参数设置图示工具的位置('above', 'below', 'left', 'right')。更多关于图示工具的配置说明,请参阅:Configuring Plot Tools。

  • x_range, y_range:分别设置X轴和Y轴的数值范围。

  • x_minor_ticks, y_minor_ticks:默认值'auto',设置各X轴或者Y轴主刻线之间的副刻线数量。

  • x_axis_location:设置X轴的位置,默认值`'below',即X轴在图示的下方。

  • y_minor_ticks:设置Y轴的位置,默认值'left'

  • x_axis_label, y_axis_label:设置对X轴和Y轴的描述。

  • x_axis_type, y_axis_type:设置X轴或者Y轴的数据类型,前面示例中已经解释。

  • 针对交互操作中鼠标动作的参数设置,主要有active_drag, active_inspect, active_scroll, active_tap,它们的默认值都是'auto',可以根据需要,对这些值进行修改(通常修改较少),具体可以参阅官方文档中有关说明。

图线模型

Bokeh 提供了多种制图模型—— Bokeh 中将这些称为 glyphs ,并且,在 Figure 类的实例对象——即“图示对象”的方法中,提供了相应的接口,以在图示对象中实现各种图线模型。对各种方法的说明,请参阅官方文档。

这里姑且简要介绍,更深入的内容,还待后续内容。或者到本文开始所推荐的课程中学习。


本文首发于 GitChat,未经授权不得转载,转载需与 GitChat 联系。

阅读全文: http://gitbook.cn/gitchat/activity/5c7a374ebaf8e549dac5311a

您还可以下载 CSDN 旗下精品原创内容社区 GitChat App , GitChat 专享技术内容哦。

FtooAtPSkEJwnW-9xkCLqSTRpBKX

这篇关于数据可视化工具 Bokeh的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/761044

相关文章

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

基于Python实现简易视频剪辑工具

《基于Python实现简易视频剪辑工具》这篇文章主要为大家详细介绍了如何用Python打造一个功能完备的简易视频剪辑工具,包括视频文件导入与格式转换,基础剪辑操作,音频处理等功能,感兴趣的小伙伴可以了... 目录一、技术选型与环境搭建二、核心功能模块实现1. 视频基础操作2. 音频处理3. 特效与转场三、高

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口