面积图例#
矩形#
条形#
四边形#
要通过指定 left
、right
、top
和 bottom
位置来绘制 *轴对齐* 矩形,请使用 quad()
图例函数
from bokeh.plotting import figure, show
p = figure(width=400, height=400)
p.quad(top=[2, 3, 4], bottom=[1, 2, 3], left=[1, 2, 3],
right=[1.2, 2.5, 3.7], color="#B3DE69")
show(p)
块#
要通过指定一个角的 x
和 y
坐标以及 width
和 height
来绘制 *轴对齐* 矩形,请使用 block()
图例函数
from bokeh.plotting import figure, show
p = figure(width=400, height=400)
p.block(x=[1, 2, 3], y=[1, 2, 3], width=[0.2, 0.5, 0.1], height=1.5)
show(p)
可旋转#
要通过指定中心坐标、width
、height
和 angle
来绘制任意矩形,请使用 rect()
图例函数
from math import pi
from bokeh.plotting import figure, show
p = figure(width=400, height=400)
p.rect(x=[1, 2, 3], y=[1, 2, 3], width=0.2, height=40, color="#CAB2D6",
angle=pi/3, height_units="screen")
show(p)
定向区域#
定向区域是两个共享共同索引的序列之间的填充区域。例如,垂直定向区域有一个 x
坐标数组和两个 y
坐标数组,y1
和 y2
,定义了 Bokeh 要填充的空间。
单个区域#
要填充垂直方向的区域,请使用 varea()
方法。您可以使用 harea()
在水平方向上执行相同操作。
from bokeh.plotting import figure, show
p = figure(width=400, height=400)
p.varea(x=[1, 2, 3, 4, 5],
y1=[2, 6, 4, 3, 5],
y2=[1, 4, 2, 2, 3])
show(p)
堆叠区域#
要堆叠定向区域,请使用 varea_stack()
和 harea_stack()
方便方法。
from bokeh.models import ColumnDataSource
from bokeh.plotting import figure, show
source = ColumnDataSource(data=dict(
x=[1, 2, 3, 4, 5],
y1=[1, 2, 4, 3, 4],
y2=[1, 4, 2, 2, 3],
))
p = figure(width=400, height=400)
p.varea_stack(['y1', 'y2'], x='x', color=("grey", "lightgrey"), source=source)
show(p)
面片#
单个面片#
以下示例使用 patch()
图例方法从 x
和 y
点的一维序列生成一个单个多边形面片
from bokeh.plotting import figure, show
p = figure(width=400, height=400)
# add a patch renderer with an alpha and line width
p.patch([1, 2, 3, 4, 5], [6, 7, 8, 7, 3], alpha=0.5, line_width=2)
show(p)
多个面片#
要绘制多个多边形面片,请使用 patches()
图例方法
from bokeh.plotting import figure, show
p = figure(width=400, height=400)
p.patches([[1, 3, 2], [3, 4, 6, 6]], [[2, 1, 4], [4, 7, 8, 5]],
color=["firebrick", "navy"], alpha=[0.8, 0.3], line_width=2)
show(p)
缺失点#
与 line()
和 multi_line()
方法一样,您可以将 NaN
值传递给 patch()
和 patches()
图例。这会在 NaN
值处生成带有间隙的不连续面片。
from math import nan
from bokeh.plotting import figure, show
p = figure(width=400, height=400)
# add a patch renderer with NaN values
p.patch([1, 2, 3, nan, 4, 5, 6], [6, 7, 5, nan, 7, 3, 6], alpha=0.5, line_width=2)
show(p)
警告
Bokeh 目前不支持对带有 NaN
值的面片对象进行命中测试。
多边形#
multi_polygons()
图例使用嵌套来接受与多边形相关的各种信息。该方法复制了 patches()
的功能,但您也可以使用它来渲染多边形内的孔。
注意
与许多其他图例方法不同,multi_polygons()
接受 x
和 y
位置的三重嵌套列表,用于构成每个多边形的外部和孔。 multi_polygons()
方法还期望每个项目的颜色、alpha 和线宽等参数的标量值或标量列表。类似地,您可以使用一个 ColumnDataSource
,其中包含三重嵌套的点坐标列表和标量列表,点坐标的顶层列表与标量列表的长度相同。
简单多边形#
以下示例使用 multi_polygons()
图例方法从 x
和 y
点的一维序列的三重嵌套列表生成一个单个多边形。
from bokeh.plotting import figure, show
p = figure(width=400, height=400)
p.multi_polygons(xs=[[[[1, 1, 2, 2]]]],
ys=[[[[3, 4, 4, 3]]]])
show(p)
带孔的多边形#
以下示例使用三个 x
和 y
点序列生成一个带孔的单个多边形。第一个序列表示多边形的外部,后面的序列表示孔。
from bokeh.plotting import figure, show
p = figure(width=400, height=400)
p.multi_polygons(xs=[[[ [1, 2, 2, 1], [1.2, 1.6, 1.6], [1.8, 1.8, 1.6] ]]],
ys=[[[ [3, 3, 4, 4], [3.2, 3.6, 3.2], [3.4, 3.8, 3.8] ]]])
show(p)
带有独立部分的多边形#
单个多边形概念可以包含多个多边形几何形状。以下示例使用几个 x
和 y
点序列生成一个多边形图例。序列中的每个项目代表图例的一部分。
from bokeh.plotting import figure, show
p = figure(width=400, height=400)
p.multi_polygons(xs=[[[ [1, 1, 2, 2], [1.2, 1.6, 1.6], [1.8, 1.8, 1.6] ], [ [3, 4, 3] ]]],
ys=[[[ [4, 3, 3, 4], [3.2, 3.2, 3.6], [3.4, 3.8, 3.8] ], [ [1, 1, 3] ]]])
show(p)
多个多边形#
嵌套的顶层将每个多边形与其他多边形分开。您可以将每个多边形视为数据源中的一行,可能对应一个标签或颜色。
from bokeh.plotting import figure, show
p = figure(width=400, height=400)
p.multi_polygons(
xs=[
[[ [1, 1, 2, 2], [1.2, 1.6, 1.6], [1.8, 1.8, 1.6] ], [ [3, 3, 4] ]],
[[ [1, 2, 2, 1], [1.3, 1.3, 1.7, 1.7] ]]],
ys=[
[[ [4, 3, 3, 4], [3.2, 3.2, 3.6], [3.4, 3.8, 3.8] ], [ [1, 3, 1] ]],
[[ [1, 1, 2, 2], [1.3, 1.7, 1.7, 1.3] ]]],
color=['blue', 'red'])
show(p)
条带#
要绘制多个水平或垂直条带(分别为无限宽或无限高的条形),请使用 hstrip()
或 vstrip()
图例方法。这些方法分别接受 y0
和 y1
或 x0
和 x1
坐标分量。请注意,这些图例只能在一个轴上计算边界,因此可能需要在正交轴上显式指定范围,例如,如果单独使用。
from bokeh.io import show
from bokeh.plotting import figure
plot = figure()
plot.hstrip(
y0=[45, 60, 80],
y1=[50, 70, 95],
line_color="pink",
fill_color="purple",
hatch_pattern="x", hatch_color="yellow",
)
plot.vstrip(
x0=[45, 60, 80],
x1=[50, 70, 95],
line_color="pink",
fill_color="yellow",
hatch_pattern="/", hatch_color="purple",
)
show(plot)
椭圆#
ellipse()
图形方法接受与 rect()
相同的属性,但渲染椭圆形状。
from math import pi
from bokeh.plotting import figure, show
p = figure(width=400, height=400)
p.ellipse(x=[1, 2, 3], y=[1, 2, 3], width=[0.2, 0.3, 0.1], height=0.3,
angle=pi/3, color="#CAB2D6")
show(p)