通用视觉属性#

要设置 Bokeh 图表的视觉属性样式,您需要了解可用的属性是什么。完整的参考指南包含每个对象的全部属性。但是,有三个属性组是许多对象共有的。它们是

  • 线条属性:线条颜色、宽度等。

  • 填充属性:填充颜色、alpha 等。

  • 文本属性:字体样式、颜色等。

本节包含有关一些最常见属性的更多详细信息。

线条属性#

line_color

用于描边线条的颜色

line_width

线条笔触宽度,单位为像素

line_alpha

0(透明)到 1(不透明)之间的浮点数

line_join

路径段应如何连接在一起

  • 'miter' miter_join

  • 'round' round_join

  • 'bevel' bevel_join

line_cap

路径段应如何终止

  • 'butt' butt_cap

  • 'round' round_cap

  • 'square' square_cap

line_dash

要使用的线条样式

  • 'solid'

  • 'dashed'

  • 'dotted'

  • 'dotdash'

  • 'dashdot'

  • 描述要使用的虚线图案的整数像素距离数组

  • 与正则表达式'^(\\d+(\\s+\\d+)*)?$'匹配的空格分隔整数字符串,用于描述要使用的虚线图案

line_dash_offset

图案应从line_dash中的哪个像素距离开始

填充属性#

fill_color

用于填充路径的颜色

fill_alpha

0(透明)到 1(不透明)之间的浮点数

阴影属性#

hatch_color

用于描边阴影图案的颜色

hatch_alpha

0(透明)到 1(不透明)之间的浮点数

hatch_weight

线条笔触宽度,单位为像素

hatch_scale

图案“大小”的粗略度量。此值具有不同的特定含义,具体取决于图案。

hatch_pattern

内置图案的字符串名称(或缩写),或hatch_extra中提供的图案的字符串名称。内置图案有

内置阴影图案#

完整名称

缩写

示例

空白

" "

blank

"."

dot

"o"

ring

水平线

"-"

horizontal_line

垂直线

"|"

vertical_line

交叉

"+"

cross

水平虚线

'"'

horizontal_dash

垂直虚线

":"

vertical_dash

螺旋

"@"

spiral

右对角线

"/"

right_diagonal_line

左对角线

"\\"

left_diagonal_line

对角交叉

"x"

diagonal_cross

右对角虚线

","

right_diagonal_dash

左对角虚线

"`"

left_diagonal_dash

水平波浪

"v"

horizontal_wave

垂直波浪

">"

vertical_wave

交叉交叉

"*"

criss_cross

hatch_extra

一个字典,将字符串名称映射到自定义图案实现。名称可以通过hatch_pattern引用。例如,如果为hatch_extra设置以下值

hatch_extra={ 'mycustom': ImageURLTexture(url=...) }

则名称"mycustom"可以设置为hatch_pattern

文本属性#

text_font

字体名称,例如'times''helvetica'

text_font_size

字体大小,以pxempt为单位,例如'16px''1.5em'

text_font_style

要使用的字体样式

  • 'normal' 普通文本

  • 'italic' 斜体文本

  • 'bold' 粗体文本

text_color

用于渲染文本的颜色

text_outline_color

用于为文本提供描边轮廓的颜色

text_alpha

0(透明)到 1(不透明)之间的浮点数

text_align

文本的水平锚点:'left''right''center'

text_baseline

文本的垂直锚点

  • 'top'

  • 'middle'

  • 'bottom'

  • 'alphabetic'

  • 'hanging'

注意

目前仅支持为文本提供轮廓颜色。尚未公开用于更高级控制文本描边轮廓的接口。

可见属性#

图形渲染器、轴、网格和注释都具有visible属性。使用此属性来打开和关闭它们。

from bokeh.plotting import figure, show

# We set-up a standard figure with two lines
p = figure(width=500, height=200, tools='')
visible_line = p.line([1, 2, 3], [1, 2, 1], line_color="blue")
invisible_line = p.line([1, 2, 3], [2, 1, 2], line_color="pink")

# We hide the xaxis, the xgrid lines, and the pink line
invisible_line.visible = False
p.xaxis.visible = False
p.xgrid.visible = False

show(p)

这在使用 Bokeh 服务器或 CustomJS 的交互式示例中特别有用。

from bokeh.layouts import layout
from bokeh.models import BoxAnnotation, Toggle
from bokeh.plotting import figure, show

p = figure(width=600, height=200, tools='')
p.line([1, 2, 3], [1, 2, 1], line_color="#0072B2")
pink_line = p.line([1, 2, 3], [2, 1, 2], line_color="#CC79A7")

green_box = BoxAnnotation(left=1.5, right=2.5, fill_color='#009E73', fill_alpha=0.1)
p.add_layout(green_box)

# Use js_link to connect button active property to glyph visible property

toggle1 = Toggle(label="Green Box", button_type="success", active=True)
toggle1.js_link('active', green_box, 'visible')

toggle2 = Toggle(label="Pink Line", button_type="success", active=True)
toggle2.js_link('active', pink_line, 'visible')

show(layout([p], [toggle1, toggle2]))

颜色属性#

Bokeh 对象有几个与颜色相关的属性。例如,使用这些颜色属性来控制线条、填充或文本的外观。

在 Bokeh 中使用以下选项之一定义颜色

  • 任何命名的 CSS 颜色,例如'green''indigo'。您还可以使用其他名称'transparent'(等于'#00000000')。

  • RGB(A) 十六进制值,例如'#FF0000'(无 alpha 信息)或'#44444444'(有 alpha 信息)。

  • CSS4 rgb()rgba()hsl()颜色字符串,例如'rgb(0 127 0 / 1.0)''rgba(255, 0, 127, 0.6)''hsl(60deg 100% 50% / 1.0)'

  • 整数的 3 元组(r, g, b)(其中rgb是 0 到 255 之间的整数)。

  • 4 元组(r, g, b, a)(其中rgb是 0 到 255 之间的整数,而a是 0 到 1 之间的浮点数)。

  • 一个 32 位无符号整数,表示以 0xRRGGBBAA 字节顺序模式的 RGBA 值,例如0xffff00ff0xff0000ff

要定义一系列颜色,请使用颜色数据数组,例如列表或ColumnDataSource的列。这也包括NumPy 数组

例如

import numpy as np

from bokeh.plotting import figure, show

x = [1, 2, 3]
y1 = [1, 4, 2]
y2 = [2, 1, 4]
y3 = [4, 3, 2]

# use a single RGBA color
single_color = (255, 0, 0, 0.5)

# use a list of different colors
list_of_colors = [
    "hsl(60deg 100% 50% / 1.0)",
    "rgba(0, 0, 255, 0.9)",
    "LightSeaGreen",
]

# use a series of color values as numpy array
numpy_array_of_colors = np.array(
    [
        0xFFFF00FF,
        0x00FF00FF,
        0xFF000088,
    ],
    np.uint32,
)

p = figure(title="Specifying colors")

# add glyphs to plot
p.line(x, y1, line_color=single_color)
p.circle(x, y2, radius=0.12, color=list_of_colors)
p.scatter(x, y3, size=30, marker="triangle", fill_color=numpy_array_of_colors)

show(p)

除了在定义颜色本身时指定颜色的 alpha 值外,您还可以通过使用图形的line_alphafill_alpha属性单独设置 alpha 值。

如果您指定了一个带有 alpha 值的颜色,并且同时还通过 line_alphafill_alpha 属性显式提供了 alpha 值,则这些 alpha 值将通过相乘的方式进行组合。例如,如果您的颜色是 '#00FF0044''rgba(255, 0, 127, 0.6)',并且您的单独 alpha 值为 0.5,则用于 glyph 的 alpha 值将为 0.6*0.5 = 0.3

下图演示了将 RGB 和 RGBA 颜色与 line_alphafill_alpha 属性结合使用的每种可能组合。

注意

如果您使用 Bokeh 的绘图界面,您还可以选择在调用渲染器方法时将 color 和/或 alpha 作为关键字指定。Bokeh 会自动将这些值应用到 glyph 的相应 fillline 属性。

然后,您仍然可以选择提供额外的 fill_colorfill_alphaline_colorline_alpha 参数。在这种情况下,前者将优先。

颜色调色板#

Bokeh 提供了许多预定义的颜色调色板,您可以参考它们来定义颜色,包括用于 颜色映射

Bokeh 的预定义调色板是 RGB(A) 十六进制字符串的序列。这些序列可以是列表或元组。

要使用其中一个预定义的调色板,请从 bokeh.palettes 模块导入它。

例如,当您导入 "Spectral6" 时,Bokeh 会让您访问一个列表,该列表包含来自 Brewer "Spectral" 颜色图的六个 RGB(A) 十六进制字符串。

>>> from bokeh.palettes import Spectral6
>>> Spectral6
['#3288bd', '#99d594', '#e6f598', '#fee08b', '#fc8d59', '#d53e4f']

有关 Bokeh 中包含的所有标准调色板的列表,请参阅 bokeh.palettes

屏幕单位和数据空间单位#

在设置 Bokeh 对象的可视属性时,您使用屏幕单位或数据空间单位。

  • 屏幕单位使用原始像素数来指定高度或宽度。

  • 数据空间单位相对于数据和图表的轴。

例如,一个 400 像素乘 400 像素的图形,其 x 轴和 y 轴范围从 0 到 10。一个宽度和高度为图形五分之一的 glyph 将具有 80 个屏幕单位或 2 个数据空间单位的大小。

Bokeh 中同时支持屏幕单位和数据空间单位的对象通常具有一个专用的属性来选择要使用的单位。此单位设置属性是属性名称加上 _units。例如:一个 Whisker 注释 具有属性 upper。要定义要使用的单位,请将 upper_units 属性设置为 'screen''data'