第一步 3:添加图例、文本和注释#

前面的第一步指南中,你生成了不同的图形并定义了它们的外观。

在本节中,你将添加和设置图例标题的样式。你还可以通过包含注释来向你的绘图添加其他信息。

添加和设置图例样式#

如果你在调用渲染器函数时包含legend_label属性,Bokeh会自动向你的绘图添加图例。例如

p.circle(x, y3, legend_label="Objects")

这会向你的绘图添加一个包含“对象”条目的图例。

使用Legend对象的属性来自定义图例。例如

from bokeh.plotting import figure, show

# prepare some data
x = [1, 2, 3, 4, 5]
y1 = [4, 5, 5, 7, 2]
y2 = [2, 3, 4, 5, 6]

# create a new plot
p = figure(title="Legend example")

# add circle renderer with legend_label arguments
line = p.line(x, y1, legend_label="Temp.", line_color="blue", line_width=2)
circle = p.scatter(
    x,
    y2,
    marker="circle",
    size=80,
    legend_label="Objects",
    fill_color="red",
    fill_alpha=0.5,
    line_color="blue",
)

# display legend in top left corner (default is top right corner)
p.legend.location = "top_left"

# add a title to your legend
p.legend.title = "Obervations"

# change appearance of legend text
p.legend.label_text_font = "times"
p.legend.label_text_font_style = "italic"
p.legend.label_text_color = "navy"

# change border and background of legend
p.legend.border_line_width = 3
p.legend.border_line_color = "navy"
p.legend.border_line_alpha = 0.8
p.legend.background_fill_color = "navy"
p.legend.background_fill_alpha = 0.2

# show the results
show(p)

另请参阅

要了解有关图例的更多信息,请参阅用户指南的注释部分中的图例和样式部分中的图例样式。参考指南中的Legend条目包含图例所有可用属性的列表。

请参阅用户指南中的交互式图例,了解如何使用图例隐藏或静音绘图中的图形。

自定义标题#

到目前为止,大多数示例都包含标题。你通过将title参数传递给figure()函数来实现这一点

p = figure(title="Headline example")

有多种方法可以设置标题文本的样式。例如

from bokeh.plotting import figure, show

# prepare some data
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]

# create new plot
p = figure(title="Headline example")

# add line renderer with a legend
p.line(x, y, legend_label="Temp.", line_width=2)

# change headline location to the left
p.title_location = "left"

# change headline text
p.title.text = "Changing headline text example"

# style the headline
p.title.text_font_size = "25px"
p.title.align = "right"
p.title.background_fill_color = "darkgrey"
p.title.text_color = "white"

# show the results
show(p)

另请参阅

有关使用title的更多信息,请参阅用户指南中的标题。在参考指南中,Title的条目包含所有可用属性的列表。

使用注释#

注释是添加到绘图中的视觉元素,使绘图更易于阅读。有关各种注释的更多信息,请参阅用户指南中的注释

一个例子是框注释。你可以使用框注释突出显示绘图的某些区域

要向绘图添加框注释,首先需要从bokeh.models导入BoxAnnotation

from bokeh.models import BoxAnnotation

接下来,创建BoxAnnotation对象。如果你不为bottomtop传递值,Bokeh会自动将框的尺寸扩展到绘图的边缘

low_box = BoxAnnotation(top=20, fill_alpha=0.2, fill_color="#F0E442")
mid_box = BoxAnnotation(bottom=20, top=80, fill_alpha=0.2, fill_color="#009E73")
high_box = BoxAnnotation(bottom=80, fill_alpha=0.2, fill_color="#F0E442")

最后,你需要将BoxAnnotation对象添加到现有的图形中。使用add_layout()方法添加你的框

p.add_layout(low_box)
p.add_layout(mid_box)
p.add_layout(high_box)

完成后的代码如下所示

import random

from bokeh.models import BoxAnnotation
from bokeh.plotting import figure, show

# generate some data (1-50 for x, random values for y)
x = list(range(0, 51))
y = random.sample(range(0, 100), 51)

# create new plot
p = figure(title="Box annotation example")

# add line renderer
line = p.line(x, y, line_color="#000000", line_width=2)

# add box annotations
low_box = BoxAnnotation(top=20, fill_alpha=0.2, fill_color="#F0E442")
mid_box = BoxAnnotation(bottom=20, top=80, fill_alpha=0.2, fill_color="#009E73")
high_box = BoxAnnotation(bottom=80, fill_alpha=0.2, fill_color="#F0E442")

# add boxes to existing figure
p.add_layout(low_box)
p.add_layout(mid_box)
p.add_layout(high_box)

# show the results
show(p)

另请参阅

要了解有关 Bokeh 中不同类型注释的更多信息,请参阅用户指南中的注释