交互式数据可视化在Python中用Bokeh实现 文章转载自Bokeh这个东西, 它是专门针对Web浏览器的呈现功能来搞的一个交互式可视化库。这就是Bokeh和别的其他的可视化库之间那个最核心的、最大的区别。就像你接下来所看到的那个图里所展现的那样, 这个图它说明了Bokeh是怎么把数据给展示到Web浏览器上面去的一个流程顺序, 也就是它那个操作的过程。你能够看到的事实是, Bokeh这个软件把多种编程语言给捆绑在了一起, 这之中包含了R语言、lua脚本语言以及Julia语言, 那些通过上述捆绑语言所运行之后所产生的JSON格式的文件, 会被作为名为库的那个东西的一种输入资料用进去, 再随后这一步操作会让相关的数据内容被呈现和展示在现代的网络浏览器当中去。Bokeh能够进行类似于D3.js的开发, 以此去创建简洁而漂亮的交互式可视化效果, 即便是面对非常大型的数据集、或者是流数据集的情况, 依然可以实现高效的交互操作, 并且, 它能够为所有用户带来便利, 让大家可以迅速且轻松地建立交互式图表、控制面板, 以及数据应用程序。像我们这样的数据科学家群体, Bokeh这个工具到底能够为我们提供什么样的帮助或者是支持呢?我起初是作为一名商业智能从业者开始我的数据科学之旅的, 随后呢, 我又逐渐地进行了学习, 学习了预测建模, 也学习了数据科学, 还进一步学习了机器学习。我在工作中主要使用的是进行数据可视化, 然后是利用SAS和来做预测分析以及做数据分析这件事儿。对于其余的那些内容或者工具来讲, 我几乎没有用过。所以, 对于我此前所有的这类数据产品或者是某种想法来说, 我基本上就只有两个办法去处理要么就是选择把相关的工作给外包出去, 要么呢就是通过网站线框图的形式来向其他人进行展示, 而这两种方式都存在一个共同的问题, 那就是都不太适合用来创建那种快速的原型系统, 但是现在状况发生了改变, 因为借助于Bokeh这个工具的存在, 我所面临的困境就得到了解决, 我就能够接着往前走, 并且还能够非常高效且迅速地制作出这些东西的原型形态出来。Bokeh的优势你可以通过输入一些简单指令, 快速创建复杂的统计图。Bokeh能够输出到多种媒介, 其中包括了HTML、还有文档以及服务器之类的这些东西。我们也是可以把那个叫做Bokeh的可视化展示部分, 给它嵌入到名为flask的程序里去。Bokeh 这个工具, 它具备一个能力, 就是说可以把那些原本写在别的库里面, 比如说像其他一些框架或者平台里面的可视化内容, 给转换过来。Bokeh这个东西啊, 它能够让你去灵活地把那些交互式的运用程序还有布局以及不同的样式选择给放到一起, 从而用于去做可视化的工作。Bokeh现在所面临的挑战。正如其他的即将推出的开源类库也在经历持续性的变动与发展的过程一样, Bokeh这个产品目前同样正处于不断的演化阶段, 所以你所编写的当前代码有可能在未来无法被完全地再次加以复用。跟D3.js这种工具比起来, Bokeh所提供出来的那些画图的选项、方式, 数量方面确实是处于相对偏少的那个状态。正因如此这层原因在摆着, 所以在不长的这段短时间周期内, Bokeh这个家伙肯定是没法去取代或者是挑战D3.js那个处在领头老大那个位置的状态的。综合来看, 考虑一下Bokeh具备的优点还有它所面临的挑战这两个方面, 它其实是现在用来快速开发出原型产品的一个非常理想的工具这个意思。但是呢, 如果你确实想要在真实的产品环境里去尝试做一些新的、不一样的事情或者搞点新花样, 那么D3.js这个库可能仍然是为你提供的最好的那个选择方案。用Bokeh实现可视化Bokeh这个工具提供了既强大又灵活的功能特点, 这使得它用起来比较简单方便, 同时也能够让自定义变得非常容易。根据图片显示, 它为使用的人安排了多个进行可视化的操作界面。图表: 这是一个高级接口, 它的作用是让使用者能够以简单、快速的方式, 去建立起那些结构复杂的数据统计类图形。绘图: 一个中级接口, 也就是那个在层级上处于中间的层面, 它的主要核心功能是去构建各种各样的视觉符号。模块: 一个低级接口low-level, 为应用程序开发人员提供最大的灵活性。在这篇文章里面, 我们所讨论的范围仅仅包括前文提到的那两个接口, 具体来说就是图表这个部分以及绘图这部分内容。图表根据以上的说明, 它是一个高级的接口, 这个接口的作用是通过标准化的可视化方法来呈现信息, 所使用的方法包括箱形图、柱状图、面积图、热图、甜甜圈图以及其他的图表种类, 只需要输入数据框或者是 numpy数组又或者是字典就可以生成这些图表。我们先来关注一下有关创建一个图表的普遍做法, 并且加以查看。1. 导入库和函数/方法2. 准备数据3. 把输出的模式给设置好, 这个模式, 就是文档或者是Web浏览器, 再一个, 还有可能是服务器。4. 你要先创建一个图表, 如果有需要的话, 你就去选择一下这个图表的样式。5. 可视化图表为了让诸位能够更透彻地掌握这些步骤的具体情况, 因此, 在下接下来就利用下面所给出的这个实例来为各位展示和演示一番整个过程。图表范例-1使用Bokeh创建一个柱状图并在Web浏览器上显示我们会照着你上面说的那些办法, 一步一步地去做, 好弄出一个图表来:在上面的图表里面, 你能够看到在最上面的位置存在工具选项, 这些具体的工具包括缩放、调整大小、重置以及旋转缩放等等, 通过利用这些工具方面的功能, 可以帮助你实现与这个图表之间的互动操作行为。与此同时, 你还可以察觉到那里存在多个不同的图表选项, 涉及到的内容有图例、X轴名标注、Y轴名标注、还有坐标网格线、宽度、高度等相关设置项目, 此外还可以看到针对各种不同类别的图表所提供的范例展示等内容信息。图表范例-2: 在文档中, 咱们利用箱线图把IRIS数据集里面的萼片长度sepal的分布情况拿出来, 然后再把花瓣长度petal的分布情况也拿出来, 接着进行比较。我首先得把库进行导入, 以此来获取那个IRIS数据集, 之后呢, 我就顺着前面说的那些个步骤走, 在文档里头把这个图表给弄出来, 实现一下可视化的操作。这是图表的示例部分编号为3, 其内容是关于将一个线图创建到Bokeh服务器的操作说明。在你把可视化图表画好并搞到那个Bokeh服务器上面去之前, 你是必须先跑起来那个服务器的。如果你使用的是包含 conda 软件包的运行环境, 你可以在任何一个目录下直接调用 bokeh- 这个运行命令来进行操作, 如果情况并非如此的话, 那么在当前的工作目录之下, 通常使用带有“./”前缀的 ./bokeh- 这一类的形式也是能够正常执行相应任务的。在Bokeh服务器上进行可视化绘图这件事儿, 它有许多的好处存在着的。图表有更多的受众对于大数据集, 是可以通过交互的方式来进行可视化的处理的。你可以让图表随着数据流的不断更新自己去做调整。创建控制面板和应用程序。按照通常的操作顺序, 在开始在 Bokeh 服务上面进行图像输出的这个动作执行之前, 我首先需要去运行那个带有 bokeh-前缀的指令代码块, 目的是为了先把相关的服务工作环境给搭建好、初始化完成, 等把这些基础工作都处理好以后, 再去接着运行那些专门用来做数据可视化的相关命令。绘图这是一个中级接口, 是一个以构建视觉符号作为核心内容的接口, 在这里你可以综合各种各样的视觉元素包括点、圆、线、补丁和许多其它元素以及工具包括悬停、缩放、保存、重置和其它工具, 来创建可视化。当你利用Bokeh所提供的接口去创建一个图表的时候, 这个图表里面会自带着属于它自己的一整套的工具还有视觉效果方面的东西。接下来的话, 你可以按照下面这些具体的步骤来进行绘制绘图这个动作的。1. 导入库、方法或函数2. 对输出的选择方式来进行确定, 这个选择方式可以是文档的, 也可以是web浏览器的, 还有可能是服务器的。3. 激活图这个词汇的用法是和类似的情况差不多的。4. 你要去继续做那个画图的活儿, 这个举动呢, 就会对那些已经出来了的图形产生一些影响。5. 图表可视化为了能够更好地让大家更好地理解这些具体的操作步骤, 所以我这边就拿一个具体的实例来进行一下相关的演示操作。绘图范例-1的内容是, 在文档里面创建一个二维散点图, 这个图形所使用的标记是正方形。同样的, 你还可以使用那些各种其他的不同形状来进行创造, 这其中包括了线条、角点以及圆弧、椭圆, 当然还有图像和补丁在内等许多种其他类型的图。这个绘图范例是第二号, 它的意思就是说要把两种不同的视觉元素给合并到同一张图里面去。对于绘图范例的第3个步骤来说, 需要针对上图进行操作具体的做法就是为这幅图添加一个悬停工具功能以及设置好坐标轴的标签内容。关于绘图的一个例子, 也就是那个编号为4的范例, 它的做法是使用那些表示纬度以及经度的数据, 以此来绘制出一张印度这个国家的地图。注意一下, 我现在手头是有着一份用来表示印度边界的、包含了纬度和经度的多边形数据的, 并且这份数据是以CSV格式存在的, 我打算把这个数据拿来用进行绘图操作。在这个位置我们是要去运用一下补丁绘图这种办法, 接下来咱们就一块儿去瞧瞧下面显示的这一条命令的具体样子:结语在本文当中, 我们讨论了使用Bokeh来创建可视化的具体做法, 同时也就如何将可视化所得到的结果呈现在文档里面、呈现在html文档里面以及呈现在bokeh服务器上这些问题进行了探讨。我们还谈到了关于如何使用绘图接口来创建个性化的可视化图表的相关事项, 通过这一功能, 你就可以把多种视觉元素结合到一起去进行工作, 从而把这些内容用来展示数据信息。