跳至主要内容

Bokeh 数据可视化教程:快速上手

学习 Bokeh 的重要基础知识和安装流程
· 7分钟 阅读

使用 AI 探索

在本教程中,您将学习如何安装 Bokeh(及其依赖项),并了解使用 Bokeh 进行可视化的基本构建块。您还将学习如何创建基础图表并进行自定义。这将为您在后续章节学习更高级的功能打下基础。

What is Bokeh?

Bokeh 是一个用于使用 Python 创建动态可视化的交互式数据可视化包。Bokeh 是开源的,您可以用它来创建能够讲述有趣故事的图表。

What sets bokeh apart from other tools?

在可视化领域,有许多用于创建仪表板和可视化的 Python 库,包括:

  • Bokeh
  • Matplotlib
  • Streamlit
  • dash
  • Seaborn
  • Plotly
  • Geoplotlib
  • Gleam
  • ggplot
  • Missingo

Bokeh 擅长以下方面:

  • 为现代浏览器构建交互式可视化
  • 制作独立文档或基于服务器的应用
  • 创建具表现力且动态的图形
  • 为大型、动态或流式数据构建仪表板

This Bokeh Tutorial Is For You...

如果您是数据科学家、数据分析师或机器学习工程师。本教程要求您具备一些 Python 基础知识,并会安装和导入包。您将学习如何使用 Bokeh 库创建交互式可视化并将其部署到网页上。Bokeh 可以帮助您创建交互式图表、仪表板和数据应用。

How To Install Bokeh

Install using Anaconda

如果您使用 Anaconda 作为 Python 包管理器,可以在 Anaconda Prompt、Windows 命令提示符或 Bash 终端中按如下方式安装 Bokeh:

conda install bokeh
conda install jinja2
conda install six
conda install requests
conda install tornado
conda install pyYaml

Install using pip

您也可以使用 pip 包管理器进行安装,如下所示:

pip install bokeh
pip install jinja2
pip install six
pip install requests
pip install tornado
pip install pyYaml

Install within Jupyter Notebook

!pip install bokeh
!pip install Jinja2
!pip install Six
!pip install Requests
!pip install Tornado
!pip install PyYaml

Verify your installation

from bokeh.io import output_notebook, show

output_notebook()

Problem Solving

如果您在安装 Bokeh 时遇到问题,可以前往 Discourse 寻求帮助。您也可以查看 Github 了解 Bokeh 相关问题的解决方案。

Welcome to Glyphs

What are glyphs anyway?

Glyph(图元)是 Bokeh 创建图表的关键构建块。您在 Bokeh 中构建的每一个图表都包含图元机制。例如,当您想创建散点图时,可以使用圆形作为标记来表示信息;在折线图中,一条线将表示信息。

这些几何形状(线或圆)在 Bokeh 中被称为图元。它们传达关于数据的视觉信息。本教程将通过演示如何使用图元创建各种类型的图表,帮助您理解图元。概括来说,我们将使用图元绘制以下图表:

  • 折线图:折线图以一条线呈现数据点沿 x 轴和 y 轴的移动。折线图适合绘制时间序列数据。
  • 柱状图:柱状图以列或条的形式表示每个类别的计数。柱状图适合对数据进行分类。
  • 补丁图:补丁图使用特定颜色显示一片区域的点。它们适合区分同一数据集中的不同分组。
  • 散点图:散点图表示两个变量之间的关系及其相关性的强度。

How To Use Glyphs For Plotting

在 Bokeh 中创建图表的一般步骤为:

  • 使用 figure() 函数创建图表,指示 Bokeh 创建一个绘图。
  • 定义标题、x 轴和 y 轴标签。
  • 然后向图表添加 line() 图元以创建折线图,并
  • 使用 cross() 图元标记 x 与 y 点之间的交点。

Creating Line Plots

下面的代码展示了如何在 bokeh 中创建一个简单的折线图。

#Import the required packages
from bokeh.io import output_notebook, output_file, show
from bokeh.plotting import figure
#Create two data arrays
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

# Create plot
plot = figure(width=400, height=400, title="Simple line plot", x_axis_label="x-axis", y_axis_label = 'y-axis')
plot.line(x,y, line_width=2, color='green')


#Show plot
output_file(“line_plot1.html”)
show(plot)

此示例展示了如何使用 line() 图元,通过一维序列的 x 和 y 数据点创建单条折线图元。您可以在 figure() 函数中指定图表的宽度和高度、标题以及坐标轴标签。在 line() 图元中,您可以通过 line_width 参数指定线条粗细,通过 color 参数指定颜色。

Simple Line Plot

Creating bar plots

#Import the
from bokeh.plotting import figure, show

animals = ['lion', 'leopard', 'elephant', 'rhino', 'buffalo']
weight_tonnes = [190, 90, 3000, 2300, 590]

p = figure(x_range=animals, height=350, title="Big Five weight", x_axis_label = "Animal", y_axis_label = "Weight",
           toolbar_location=None, tools="")

p.vbar(x=animals, top=weight_tonnes, width=0.9)

p.xgrid.grid_line_color = None
p.y_range.start = 0

show(p)

Bar Plot

Creating patch plots

补丁图通过着色来表示某个群组或区域具有相似特征。您可以按如下方式创建一个简单的补丁图:

# Import required packages
from bokeh.io import output_file, show
from bokeh.plotting import figure
# Create the regions to chart
x_region = [[1,1,2], [2,3,3], [2,3,5,4]]
y_region = [[2,5,6], [3,6,7], [2,4,7,8]]
# Create plot
plot = figure()
plot.patches(x_region, y_region, fill_color = ['blue', 'yellow', 'green'], line_color = 'black')
show(plot)

Patch Plots

这里有三个不同的区域:第一是 [1,1,2] 映射到 y 轴上的 [2,5,6]。第二是 x 轴上的 [2,2,3] 映射到 y 轴上的 [3,6,7],第三是 x 轴上的 [2,3,5,4] 映射到 y 轴上的 [2,4,7,8]。patches 图元使用不同颜色为每个区域填充补丁。_linecolor 参数用于指定每个补丁的边框颜色。

Creating scatter plots

数据科学家常用散点图来判断两个变量之间的关系。您可以按如下方式在 Bokeh 中创建一个简单的散点图:

# Import required packages
from bokeh.io import output_file, show
from bokeh.plotting import figure
# Create x and y data points
x = [1,2,3,4,5]
y = [5,7,2,2,4]
# Create plot
plot = figure(title = "Scatter plot", x_axis_label = "Label name of x axis", y_axis_label ="Label name of y axis")
plot.circle(x,y, size = 30, alpha = 0.5)
# Add labels

# Output the plot
show(plot)

Scatter Plots

该代码使用圆形标记创建散点图中 x 与 y 列表的交点。除了圆形,您还可以使用其他标记,例如:

  • cross()
  • x()
  • diamond()
  • diamond_cross()
  • circle_x()
  • circle_cross()
  • triangle()
  • inverted_triangle()
  • square_x()
  • square_cross()
  • asterisk()

size = 30 参数用于指定每个圆的大小。下图汇总了 bokeh 中可用的所有标记。

Bokeh Markers

来源:Bokeh.org

alpha 参数用于指定圆形的透明度。其取值范围为 0 到 1,0 表示完全透明,1 表示不透明。

Conclusion

本教程介绍了 Bokeh 作为一款交互式且高级的可视化工具。教程为您在使用 Bokeh 时可能遇到的内容打下基础。您已经看到如何在 Bokeh 中基于图元的概念创建折线图、柱状图、补丁图和散点图。有关在 Bokeh 中可以创建的各种图表的更多详情,请查看以下 Bokeh 文档。

主题