通用视觉属性#
要设置 Bokeh 图表的视觉属性样式,您需要了解可用的属性是什么。完整的参考指南包含每个对象的全部属性。但是,有三个属性组是许多对象共有的。它们是
线条属性:线条颜色、宽度等。
填充属性:填充颜色、alpha 等。
文本属性:字体样式、颜色等。
本节包含有关一些最常见属性的更多详细信息。
线条属性#
line_color
用于描边线条的颜色
line_width
线条笔触宽度,单位为像素
line_alpha
0(透明)到 1(不透明)之间的浮点数
line_join
路径段应如何连接在一起
line_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
中提供的图案的字符串名称。内置图案有# 完整名称
缩写
示例
空白
" "
点
"."
环
"o"
水平线
"-"
垂直线
"|"
交叉
"+"
水平虚线
'"'
垂直虚线
":"
螺旋
"@"
右对角线
"/"
左对角线
"\\"
对角交叉
"x"
右对角虚线
","
左对角虚线
"`"
水平波浪
"v"
垂直波浪
">"
交叉交叉
"*"
hatch_extra
一个字典,将字符串名称映射到自定义图案实现。名称可以通过
hatch_pattern
引用。例如,如果为hatch_extra
设置以下值hatch_extra={ 'mycustom': ImageURLTexture(url=...) }
则名称
"mycustom"
可以设置为hatch_pattern
。
文本属性#
text_font
字体名称,例如
'times'
、'helvetica'
text_font_size
字体大小,以px、em或pt为单位,例如
'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)
(其中r、g和b是 0 到 255 之间的整数)。4 元组
(r, g, b, a)
(其中r、g和b是 0 到 255 之间的整数,而a是 0 到 1 之间的浮点数)。一个 32 位无符号整数,表示以 0xRRGGBBAA 字节顺序模式的 RGBA 值,例如
0xffff00ff
或0xff0000ff
。
要定义一系列颜色,请使用颜色数据数组,例如列表或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_alpha
或fill_alpha
属性单独设置 alpha 值。
如果您指定了一个带有 alpha 值的颜色,并且同时还通过 line_alpha
或 fill_alpha
属性显式提供了 alpha 值,则这些 alpha 值将通过相乘的方式进行组合。例如,如果您的颜色是 '#00FF0044'
或 'rgba(255, 0, 127, 0.6)'
,并且您的单独 alpha 值为 0.5
,则用于 glyph 的 alpha 值将为 0.6*0.5 = 0.3
。
下图演示了将 RGB 和 RGBA 颜色与 line_alpha
或 fill_alpha
属性结合使用的每种可能组合。
注意
如果您使用 Bokeh 的绘图界面,您还可以选择在调用渲染器方法时将 color
和/或 alpha
作为关键字指定。Bokeh 会自动将这些值应用到 glyph 的相应 fill
和 line
属性。
然后,您仍然可以选择提供额外的 fill_color
、fill_alpha
、line_color
和 line_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'
。