第一步 2:添加和自定义渲染器#
在之前的步骤指南中,您使用了 Bokeh 的figure()
函数来渲染折线图。
在本节中,您将使用不同的渲染器函数来创建各种其他类型的图形。您还将自定义 Glyph 的外观。
渲染不同的 Glyph#
Bokeh 的绘图接口支持许多不同的 Glyph,例如线、条形、六边形图块或其他多边形。
渲染圆形#
p.scatter(x, y3, legend_label="Objects", color="yellow", size=12)
将您之前可视化中的一个line()
函数替换为circle()
函数以创建圆形
from bokeh.plotting import figure, show
# prepare some data
x = [1, 2, 3, 4, 5]
y1 = [6, 7, 2, 4, 5]
y2 = [2, 3, 4, 5, 6]
y3 = [4, 5, 5, 7, 2]
# create a new plot with a title and axis labels
p = figure(title="Multiple glyphs example", x_axis_label="x", y_axis_label="y")
# add multiple renderers
p.line(x, y1, legend_label="Temp.", color="#004488", line_width=3)
p.line(x, y2, legend_label="Rate", color="#906c18", line_width=3)
p.scatter(x, y3, legend_label="Objects", color="#bb5566", size=16)
# show the results
show(p)
渲染条形#
类似地,使用vbar()
函数来渲染垂直条形
p.vbar(x=x, top=y2, legend_label="Rate", width=0.5, bottom=0, color="red")
将vbar()
函数添加到您之前可视化中
from bokeh.plotting import figure, show
# prepare some data
x = [1, 2, 3, 4, 5]
y1 = [6, 7, 2, 4, 5]
y2 = [2, 3, 4, 5, 6]
y3 = [4, 5, 5, 7, 2]
# create a new plot with a title and axis labels
p = figure(title="Multiple glyphs example", x_axis_label="x", y_axis_label="y")
# add multiple renderers
p.line(x, y1, legend_label="Temp.", color="blue", line_width=2)
p.vbar(x=x, top=y2, legend_label="Rate", width=0.5, bottom=0, color="red")
p.scatter(x, y3, legend_label="Objects", color="yellow", size=12)
# show the results
show(p)
另请参阅
要了解有关条形图以及 Bokeh 处理分类数据的其他方法的更多信息,请参阅用户指南中的条形图。
自定义 Glyph#
不同的渲染器函数接受各种参数来控制 Glyph 的外观。
定义新 Glyph 的属性#
例如,circle()
函数允许您定义诸如圆形的颜色或直径等方面
fill_color
:圆形的填充颜色fill_alpha
:填充颜色的透明度(介于0
和1
之间的任何值)line_color
:圆形轮廓的填充颜色legend_label
:圆形的图例条目
请注意,在前面的示例中,您使用了color
属性来定义对象的颜色。color
是一个别名,它会自动将对象的全部颜色属性设置为相同的颜色。例如,将"yellow"
传递给圆形的color
属性与分别将fill_color
和line_color
设置为黄色相同。
在 Bokeh 中,您可以以多种方式指定颜色。例如
使用命名的 CSS 颜色之一(例如
"firebrick"
)使用十六进制值,以
#
开头(例如"#00ff00"
)使用 3 元组表示 RGB 颜色(例如
(100, 100, 255)
)使用 4 元组表示 RGBA 颜色(例如
(100, 100, 255, 0.5)
)
创建图例标签为“对象”的圆形,并使圆形略微透明,填充颜色为红色,轮廓为蓝色
from bokeh.plotting import figure, show
# prepare some data
x = [1, 2, 3, 4, 5]
y = [4, 5, 5, 7, 2]
# create a new plot with a title and axis labels
p = figure(title="Glyphs properties example", x_axis_label="x", y_axis_label="y")
# add circle renderer with additional arguments
p.scatter(
x,
y,
marker="circle",
size=80,
legend_label="Objects",
fill_color="red",
fill_alpha=0.5,
line_color="blue",
)
# show the results
show(p)
更改现有 Glyph 的属性#
如果要在创建对象后更改任何属性,可以直接定义并覆盖对象的属性。
例如,取上面的圆形。您通过传递参数fill_color="red"
来定义圆形为红色。
要将圆形的颜色从红色更改为蓝色,首先需要在调用circle()
函数时为新对象分配一个变量名(例如scatter
)。
scatter = p.scatter(
marker="circle",
x,
y,
size=80,
legend_label="Objects",
fill_color="red",
fill_alpha=0.5,
line_color="blue",
)
接下来,使用该变量访问对象的glyph
属性并更改其属性
glyph = scatter.glyph
glyph.fill_color = "blue"
再次生成红色圆形,但这次在输出绘图之前将其颜色更改为蓝色
from bokeh.plotting import figure, show
# prepare some data
x = [1, 2, 3, 4, 5]
y = [4, 5, 5, 7, 2]
# create a new plot with a title and axis labels
p = figure(title="Glyphs properties example", x_axis_label="x", y_axis_label="y")
# add circle renderer with additional arguments
circle = p.scatter(
x,
y,
marker="circle",
size=80,
legend_label="Objects",
fill_color="red",
fill_alpha=0.5,
line_color="blue",
)
# change color of previously created object's glyph
glyph = circle.glyph
glyph.fill_color = "blue"
# show the results
show(p)