大家好,我是东哥。本篇是关于如何使用 Bokeh 的快速教程,首发于公众号:Python数据科学

Python交互式可视化库Bokeh在现代web浏览器中支持大型数据集的高性能可视化表示。Bokeh 的目标是使用 D3.js 样式提供优雅,简洁新颖的图形化风格,同时提供大型数据集的高性能交互功能。

Boken 可以快速的创建交互式的绘图,仪表盘和数据应用。绘图界面以两个主要组件为中心–数据和符号。

开始前,先欣赏下bokeh图形之美:

化学元素周期表

物理洛伦茨吸引子

数学正弦曲线

生物细菌极坐标图

地理德克萨斯州

美术颜色滑块图


用bokeh绘图交互图形的基本步骤:

  1. 准备一些数据
    Python列表,NumPy数组,panda的数据筐等准备数据
  2. 创建一个新的情节
  3. 使用可视渲染器塑造数据
  4. 指定在何处生成输出
  5. 显示或保存结果
from bokeh.plotting import figure
from bokeh.io import output_file, show
x = [1, 2, 3, 4, 5]                       # Step 1
y = [6, 7, 2, 4, 5]
p = figure(title="simple line example",   # Step 2x_axis_label='x',y_axis_label='y')
p.line(x, y, legend="Temp.", line_width=2)# Step 3
output_file("lines.html")                 # Step 4
show(p)                                   # Step 5

bokeh接口

Charts: 高层接口,以简单的方式绘制复杂的统计图
Plotting: 中层接口,用于组装图形元素
Models: 底层接口,为开发者提供了最大的灵活性

本次实用中层接口 boken.plotting绘制图形

一、数据准备

Python列表和NumPy数组等数据序列来将数据传递给bokeh。bokeh自动将这些列表转换为ColumnDataSource对象。

你也可以手动操作:

import numpy as np
import pandas as pd
df = pd.DataFrame(np.array([[33.9,4,65, 'US'],[32.4,4,66, 'Asia'],[21.4,4,109, 'Europe']]), columns=['mpg','cyl', 'hp', 'origin'],index=['Toyota', 'Fiat', 'Volvo'])from bokeh.models import ColumnDataSource
cds_df = ColumnDataSource(df)

ColumnDataSource是Bokeh自己的数据结构。

二、创建图表

使用figure()函数创建图表。

from bokeh.plotting import figure
p1 = figure(plot_width=300, tools='pan,box_zoom')
p2 = figure(plot_width=300, plot_height=300,x_range=(0, 8), y_range=(0, 8))
p3 = figure()

三、添加和自定义渲染器

Bokeh的绘图界面支持许多不同的字形,例如线条、条形或其他多边形。

符号

# 散点标记
p1.circle(np.array([1,2,3]), np.array([3,2,1]),fill_color='white')
p2.square(np.array([1.5,3.5,5.5]), [1,4,3], color='blue', size=1)# 线符号
p1.line([1,2,3,4], [3,4,5,6], line_width=2)
p2.multi_line(pd.DataFrame([[1,2,3],[5,6,7]]),pd.DataFrame([[3,4,5],[3,2,1]]),color="blue")

自定义符号

不同的渲染器函数接受各种参数来控制字形的外观。

如使用circel()定义圆环的颜色或直径:

fill_color:圆圈的填充颜色
fill_alpha :填充颜色的透明度(0到1之间的任何值)
line_color:圆圈轮廓的填充颜色
size:圆的大小(以屏幕空间或数据空间单位)
legend_label: 圈圈的传奇条目

# 选择和非选择符号
p = figure(tools='box_select')
p.circle('mpg', 'cyl', source=cds_df,selection_color='red',nonselection_alpha=0.1)# 悬停符号
from bokeh.models import HoverTool
hover = HoverTool(tooltips=None, mode='vline')
p3.add_tools(hover)

在bokeh中,您可以通过几种方式指定颜色。例如:

  1. CSS颜色器(如"firebrick")
  2. 使用十六进制值 (如"#00ff00")
  3. 使用RGB颜色的3元组(如(100, 100, 255))
  4. 使用4元组的RGBA颜色 (如(100, 100, 255, 0.5))
  5. 颜色映射器
# 颜色映射器
from bokeh.models import CategoricalColorMapper
color_mapper = CategoricalColorMapper(factors=['US', 'Asia', 'Europe'],palette=['blue', 'red', 'green'])
p3.circle('mpg', 'cyl', source=cds_df,color=dict(field='origin',transform=color_mapper),legend='Origin')

图例位置

# 绘图区域内部
p.legend.location = 'bottom_left'
from bokeh.models import Legend
r1 = p2.asterisk(np.array([1,2,3]), np.array([3,2,1])
r2 = p2.line([1,2,3,4], [3,4,5,6])
legend = Legend(items=[("One" ,[p1, r1]),("Two",[r2])],location=(0, -30))
# 绘图区域外部
p.add_layout(legend, 'right')

图例方向

p.legend.orientation = "horizontal"
p.legend.orientation = "vertical"

图例背景和边界

p.legend.border_line_color = "navy"
p.legend.background_fill_color = "white"

图例文本的外观

p.legend.label_text_font = "times"
p.legend.label_text_font_style = "italic"
p.legend.label_text_color = "navy"

实用主题

五个内置主题:caliber, dark_minimal, light_minimal, night_sky, and contrast

from bokeh.io import curdoc
curdoc().theme = "dark_minimal"

创建行&列布局

组合单个图表的最简单方法是将它们分配给行或列。

# 行
from bokeh.layouts import row
layout = row(p1,p2,p3)
# 列
from bokeh.layouts import columns
layout = column(p1,p2,p3)
# 嵌套行和列
layout = row(column(p1,p2), p3)

创建网格布局

from bokeh.layouts import gridplot
row1 = [p1,p2]
row2 = [p3]
layout = gridplot([[p1,p2],[p3]])

选项卡布局

from bokeh.models.widgets import Panel, Tabs
tab1 = Panel(child=p1, title="tab1")
tab2 = Panel(child=p2, title="tab2")
layout = Tabs(tabs=[tab1, tab2])

连接绘图

# 连接轴
p2.x_range = p1.x_range
p2.y_range = p1.y_range
# 连接刷
p4 = figure(plot_width = 100,tools='box_select,lasso_select')
p4.circle('mpg', 'cyl', source=cds_df)
p5 = figure(plot_width = 200,tools='box_select,lasso_select')
p5.circle('mpg', 'hp', source=cds_df)
layout = row(p4,p5)

四、输出与导出

Notebook

from bokeh.io import output_notebook, show
output_notebook()

HTML

# 独立的
from bokeh.embed import file_html
from bokeh.resources import CDN
html = file_html(p, CDN, "my_plot")

使用output_file()函数将可视化保存到HTML文件中。

from bokeh.io import output_file, show
output_file('my_bar_chart.html', mode='cdn')# 组件
from bokeh.embed import components
script, div = components(p)

PNG & SVG

Bokeh使用Selenium创建PNG和SVG文件,所以bokeh需要通过能够让Selenium访问的浏览器来渲染PNG或SVG文件。

Selenium允许Bokeh在没有图形用户界面(GUI)的浏览器中运行。Selenium需要能够访问Firefox浏览器(通过geckodriver包)或Chromium浏览器(通过chromedriver包)。

因此需要安装第三方包:

pip install selenium geckodriver firefox
# png
from bokeh.io import export_png
export_png(p, filename="plot.png")# svg
from bokeh.io import export_svgs
p.output_backend = "svg"
export_svgs(p, filename="plot.svg")

五、显示和导出图表

选择HTML且调用show()函数时,Bokeh会创建HTML文件。该功能还会自动打开网页浏览器以显示HTML文件。

如果希望Bokeh只生成文件而不在web浏览器中打开它,则使用save()函数代替。此时需要提前导入save()函数。

from bokeh.plotting import show, save
show(layout)
save(layout)

更多详情请参见官方文档:https://docs.bokeh.org/

我是东哥,感谢各位人才的:点赞、收藏和评论,我们下期见!

原创文章持续更新,可以微信搜一搜「 Python数据科学」第一时间阅读。

Bokeh可视化图表使用教程相关推荐

  1. python数据分析图_Python数据分析:手把手教你用Pandas生成可视化图表的教程

    大家都知道,Matplotlib 是众多 Python 可视化包的鼻祖,也是Python最常用的标准可视化库,其功能非常强大,同时也非常复杂,想要搞明白并非易事.但自从Python进入3.0时代以后, ...

  2. 可视化图表进阶教程:业务数据地图的绘制

    在上篇文章--<可视化图表入门教程>中,我们学会了基础可视化图表的使用,那么进阶可视化图表需要掌握哪些图表类型呢?本篇文章将为大家讲解"可视化图表进阶教程:业务数据地图的绘制&q ...

  3. Vue项目引入Echarts可视化图表库教程踩坑

    Apache ECharts是一个基于 JavaScript 的开源可视化图表库,ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表. ...

  4. 可视化图表入门教程讲解

    数据可视化,即通过图表形式展现数据,帮助我们快速.准确理解信息.好的可视化会"讲故事",能向我们揭示数据背后的规律. 本文主要介绍常见图表的信息表达特征和适用场景,帮助大家了解如何 ...

  5. 数据可视化图表类型_数据可视化中12种最常见的图表类型

    数据可视化图表类型 In the current era of large amounts of information in the form of numbers available everyw ...

  6. excel可视化图表插件_Axure 教程:利用图表前端插件实现高级可视化图表

    如何通过图标前端插件完成高级可视化图表?笔者在此给出了详细教程,与大家分享~~ 后台开发中避免不了实现一些可视化的图表,主要制作的方法有四种:Excel表格截图.Axure图形绘制.Axure网页框架 ...

  7. layui导入模板数据_数据可视化图表 教程echarts,第一讲

    1 我们写web项目,展示数据的地方,可能会使用到图表.今天就讲这个玩意. 本教程暂时定为 三讲:(随后情况,如果有新的研究,会有所更新!) 第一讲  饼图的使用 第二讲  柱状图的使用 第三讲  拆 ...

  8. tkinter的可视化拖拽工具_拒绝丑图表,教你用最简单的方法做最炫酷的可视化图表!附教程...

    数据可视化在我们的工作和生活中应用的越来越多,不管是在各种年度季度总结报告中,还是专业的数据分析报告中,我们经常要利用可视化图表来展现分析数据,一个高端大气的可视化图表就能给我们报告加分不少. 以前企 ...

  9. 【Axure教程】中继器结合echarts生成可视化图表

    echarts是一个基于 JavaScript 的开源可视化图表库,里面包含很多常用且美观的统计图表.但是由于大部分产品经理不太懂代码,导致他们在画原型图的时候,不能直接使用该工具,就算会代码,使用起 ...

最新文章

  1. MongoDB修改器的使用1
  2. Nature:麻省理工人造「巨型原子」问世,量子处理和量子通信合二为一
  3. kali python3安装scapy库_Kali-Python scapy模块-扫描
  4. Linux从入门到精通系列之SHELL编程awk语法结构及案例解析
  5. 单片机large模式_对单片机存储分配新的认识
  6. pythonsuper_python中的super()是什么意思呢
  7. 绝地求闪退be服务器未运行,绝地求生大逃杀BE启动失败,应用程序无法正常启动...
  8. include_fns.php_管理页面
  9. Linux用户和组管理,查看软件缓存,通过命令查看硬件信息(cpu,版本,序列号,内存,主板,内核等)
  10. python web开发-flask中日志的使用
  11. 风机桨叶故障诊断(四) 正负样本准备——从图像中随机扣图
  12. 计算机主机箱前后都有什么,目前四种热门的主机机箱设计都有哪些优缺点?
  13. SharePoint服务器连接配置数据库的连接字符串保存位置
  14. mysql 表格入门_MySQL-快速入门(1)基本数据库、表操作语句
  15. [Android] [逆向工程] 安卓逆向入门篇
  16. label怎么换行 vb_C#与VB.NET换行符的对比及某些string在label能正常换行,在textbox不能换行的问题...
  17. 海思Hi3521/Hi3520A/Hi3520D/Hi3515A/Hi3515C U-boot 移植应用 开发指南
  18. Timesnet: Temporal 2d-variation modeling for general time series analysis
  19. 希尔伯特(hilbert)矩阵与最小二乘法
  20. 【鬼畜】UVA - 401每日一题·猛男就是要暴力打表

热门文章

  1. 20150906全志a33上调通rtl8188eus的过程(sina33)
  2. 创业需要的就是“不安分”的人
  3. 写一篇 500 字的文章,主题关于 18 世纪哲学家大卫 • 休谟和恐怖悖论,即研究人们是如何从他们害怕的东西中获得乐趣的...
  4. vue项目中使用百度地图api完成自定义搜索功能(包含搜索详细地理位置)
  5. python个人所得税怎么写分录_个人所得税的凭证分录怎么写
  6. 会计学测试(所得税、未分配利润)
  7. Spark-000讲:What is Spark ?
  8. 关于网络安全法的个人理解
  9. 项目:模仿苹果桌面,近大远小
  10. Java网页编程与设计——javascript语言