Bokeh 简明教程

Bokeh - Plots with Glyphs

任何图表通常由一个或多个几何形状组成,例如 line, circle, rectangle, 等。这些形状具有关于相应数据集的视觉信息。在 Bokeh 术语中,这些几何形状称为图形。使用 bokeh.plotting interface 构造的 Bokeh 图表使用一组默认工具和样式。但是,可以使用可用的绘图工具自定义样式。

Types of Plots

使用图形创建的不同类型的图表如下所示 −

Line plot

此类型的图表对于以线条形式沿 x 轴和 y 轴可视化点的移动非常有用。它用于执行时间序列分析。

Bar plot

这通常对于指示数据集中的特定列或字段的每个类别的计数非常有用。

Patch plot

此图表指示特定阴影中某个区域中的点。此类图表用于区分同一数据集内的不同组。

Scatter plot

此类型的图表用于可视化两个变量之间的关系并指示它们之间的相关性强度。

通过调用 Figure 类 的适当方法,可以形成不同的图形图表。通过遵循构造函数获得 Figure 对象 −

from bokeh.plotting import figure
figure(**kwargs)

Figure 对象可以通过各种关键字参数进行自定义。

Sr.No

Title

设置图表的标题

1

x_axis_label

设置 x 轴的标题

2

y_axis_label

设置 y 轴的标题

3

plot_width

Set width of figure

4

plot_height

Set height of figure

Line plot

Figure 对象的 line() method 将线形图形添加到 Bokeh 图形中。它需要 x 和 y 参数作为数据数组,以显示其线性关系。

from bokeh.plotting import figure, show
fig = figure()
fig.line(x,y)
show(fig)

以下代码在两个值集中渲染了一条简单的折线图,形式为 Python 列表对象 −

from bokeh.plotting import figure, output_file, show
x = [1,2,3,4,5]
y = [2,4,6,8,10]
output_file('line.html')
fig = figure(title = 'Line Plot example', x_axis_label = 'x', y_axis_label = 'y')
fig.line(x,y)
show(fig)

Output

line plot

Bar plot

figure 对象具有两种不同的方法用于构建条形图

hbar()

条形图水平显示在绘图宽度上。 hbar() method 具有以下参数 −

Sr.No

y

水平条形图的中心的 y 坐标。

1

height

垂直条形图的高度。

2

right

右边缘的 x 坐标。

3

left

左边缘的 x 坐标。

以下代码是使用 Bokeh 的 horizontal bar 的示例。

from bokeh.plotting import figure, output_file, show
fig = figure(plot_width = 400, plot_height = 200)
fig.hbar(y = [2,4,6], height = 1, left = 0, right = [1,2,3], color = "Cyan")
output_file('bar.html')
show(fig)

Output

hbar plot

vbar()

条形图垂直显示在绘图高度上。 vbar() method 具有以下参数 −

Sr.No

x

垂直条形图中心的 x 坐标。

1

width

垂直条形图的宽度。

2

top

顶部边缘的 y 坐标。

3

bottom

底部边缘的 y 坐标。

以下代码显示 vertical bar plot

from bokeh.plotting import figure, output_file, show
fig = figure(plot_width = 200, plot_height = 400)
fig.vbar(x = [1,2,3], width = 0.5, bottom = 0, top = [2,4,6], color = "Cyan")
output_file('bar.html')
show(fig)

Output

vbar plot

Patch plot

在 Bokeh 中,将特定颜色的某个区域着色的图称为补丁图,用来显示区域或具有相似属性的组。Figure 对象具有 patch() 和 patches() 方法,可用于此目的。

patch()

此方法将补丁字形添加到给定的 figure。此方法具有以下参数 −

1

x

补丁点的 x 坐标。

2

y

补丁点的 y 坐标。

以下 Python 代码生成了一个简单的 patch plot

from bokeh.plotting import figure, output_file, show
p = figure(plot_width = 300, plot_height = 300)
p.patch(x = [1, 3,2,4], y = [2,3,5,7], color = "green")
output_file('patch.html')
show(p)

Output

path

patches()

此方法用于绘制多个多边形块,它需要以下参数−

1

xs

以“列表列表”形式给出的所有块的 x 坐标。

2

ys

以“列表列表”形式给出的所有块的 y 坐标。

作为 patches() 方法的一个示例,运行以下代码 −

from bokeh.plotting import figure, output_file, show
xs = [[5,3,4], [2,4,3], [2,3,5,4]]
ys = [[6,4,2], [3,6,7], [2,4,7,8]]
fig = figure()
fig.patches(xs, ys, fill_color = ['red', 'blue', 'black'], line_color = 'white')
output_file('patch_plot.html')
show(fig)

Output

patches

Scatter Markers

散点图通常用于确定两个变量之间的双变量关系。可以利用 Bokeh 向其中添加更强的交互性。可通过调用 Figure 对象的 scatter() 方法获得散点图。此方法使用以下参数−

1

x

中心 x 坐标的值或字段名称

2

y

中心 y 坐标的值或字段名称

3

size

屏幕单位中大小的值或字段名称

4

marker

标记类型的值或字段名称

5

color

设置填充和线条颜色

在 Bokeh 中定义了以下标记类型常量:−

  1. Asterisk

  2. Circle

  3. CircleCross

  4. CircleX

  5. Cross

  6. Dash

  7. Diamond

  8. DiamondCross

  9. Hex

  10. InvertedTriangle

  11. Square

  12. SquareCross

  13. SquareX

  14. Triangle

  15. X

以下 Python 代码会生成具有圆圈标记的散点图。

from bokeh.plotting import figure, output_file, show
fig = figure()
fig.scatter([1, 4, 3, 2, 5], [6, 5, 2, 4, 7], marker = "circle", size = 20, fill_color = "grey")
output_file('scatter.html')
show(fig)

Output

scatter markers