数据可视化工具 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

相关文章

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.

大数据spark3.5安装部署之local模式详解

《大数据spark3.5安装部署之local模式详解》本文介绍了如何在本地模式下安装和配置Spark,并展示了如何使用SparkShell进行基本的数据处理操作,同时,还介绍了如何通过Spark-su... 目录下载上传解压配置jdk解压配置环境变量启动查看交互操作命令行提交应用spark,一个数据处理框架

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入

通过ibd文件恢复MySql数据的操作方法

《通过ibd文件恢复MySql数据的操作方法》文章介绍通过.ibd文件恢复MySQL数据的过程,包括知道表结构和不知道表结构两种情况,对于知道表结构的情况,可以直接将.ibd文件复制到新的数据库目录并... 目录第一种情况:知道表结构第二种情况:不知道表结构总结今天干了一件大事,安装1Panel导致原来服务

Jmeter如何向数据库批量插入数据

《Jmeter如何向数据库批量插入数据》:本文主要介绍Jmeter如何向数据库批量插入数据方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Jmeter向数据库批量插入数据Jmeter向mysql数据库中插入数据的入门操作接下来做一下各个元件的配置总结Jmete

Redis客户端工具之RedisInsight的下载方式

《Redis客户端工具之RedisInsight的下载方式》RedisInsight是Redis官方提供的图形化客户端工具,下载步骤包括访问Redis官网、选择RedisInsight、下载链接、注册... 目录Redis客户端工具RedisInsight的下载一、点击进入Redis官网二、点击RedisI

基于Python实现一个PDF特殊字体提取工具

《基于Python实现一个PDF特殊字体提取工具》在PDF文档处理场景中,我们常常需要针对特定格式的文本内容进行提取分析,本文介绍的PDF特殊字体提取器是一款基于Python开发的桌面应用程序感兴趣的... 目录一、应用背景与功能概述二、技术架构与核心组件2.1 技术选型2.2 系统架构三、核心功能实现解析

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是