第一步 2:添加和自定义渲染器#

之前的步骤指南中,您使用了 Bokeh 的figure()函数来渲染折线图。

在本节中,您将使用不同的渲染器函数来创建各种其他类型的图形。您还将自定义 Glyph 的外观。

渲染不同的 Glyph#

Bokeh 的绘图接口支持许多不同的 Glyph,例如线、条形、六边形图块或其他多边形。

另请参阅

Bokeh 的figure()函数参考指南中提供了所有受支持的 Glyph 方法的完整列表。有关 Bokeh Glyph 的详细信息,请参阅 Bokeh 用户指南中的基本绘图

渲染圆形#

使用circle()函数代替line()来渲染圆形

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:填充颜色的透明度(介于01之间的任何值)

  • line_color:圆形轮廓的填充颜色

  • size:圆形的大小(以屏幕单位数据单位为单位)

  • legend_label:圆形的图例条目

请注意,在前面的示例中,您使用了color属性来定义对象的颜色。color是一个别名,它会自动将对象的全部颜色属性设置为相同的颜色。例如,将"yellow"传递给圆形的color属性与分别将fill_colorline_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)

另请参阅

有关各种视觉属性的更多信息,请参阅用户指南中的Glyph 样式常规视觉属性

每种类型的 Glyph 都有不同的属性。请参阅参考指南中的figure()以查看每种 Glyph 方法的所有可用属性。