Bokeh 图表中图例的位置
在本文中,我们将介绍如何在 Bokeh 图表中设置图例的位置。Bokeh 是一个强大的 Python 可视化库,用于创建交互式、动态和具有吸引力的数据可视化。
图例是指图表中标记不同元素的标签,它们可以帮助读者理解图表中不同组件的含义。Bokeh 提供了多种选项来设置图例的位置,以便更好地适应不同的需求。
阅读更多:Bokeh 教程
默认位置
首先,让我们来看一下 Bokeh 默认情况下图例的位置。当我们创建一个简单的折线图时,Bokeh 会将图例放置在图表的右上角。
from bokeh.plotting import figure, show
# 创建一个简单的折线图
p = figure()
p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], legend_label="Line")
# 显示图表
show(p)
在上面的代码中,我们使用 figure 创建了一个简单的折线图,并使用 line 方法添加了一个数据系列。legend_label 参数用于设置图例中的标签。运行该代码,我们可以看到图例位于默认的右上角位置。
设置图例的位置
Bokeh 提供了多种方式来设置图例的位置。我们可以使用 legend.location 属性来指定图例的具体位置。
from bokeh.plotting import figure, show
from bokeh.models import Legend
# 创建一个简单的折线图
p = figure()
line = p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], legend_label="Line")
# 设置图例位置为右下角
legend = Legend(items=[("Line", [line])], location="bottom_right")
p.add_layout(legend, 'right')
# 显示图表
show(p)
在上面的代码中,我们首先创建了一个 Legend 对象,并使用 items 参数指定图例中的项。然后,我们使用 location 参数将图例位置设置为右下角。最后,我们使用 add_layout 将图例添加到图表中。
除了 bottom_right,Bokeh 还提供了以下位置选项供我们自由选择:
top_lefttop_centertop_rightcenter_rightbottom_rightbottom_centerbottom_leftcenter_leftcenter
我们可以根据需要选择适合的位置。
自定义图例的位置
除了使用预定义的位置选项之外,我们还可以通过设置 legend.location 为 (x, y) 元组的方式来自定义图例的位置。这种方式允许我们指定图例相对于图表的百分比位置。
from bokeh.plotting import figure, show
# 创建一个简单的折线图
p = figure()
p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], legend_label="Line")
# 设置图例位置为图表右上角的 80% 垂直位置和 10% 水平位置
p.legend.location = (0.1, 0.8)
# 显示图表
show(p)
在上面的代码中,我们通过将 legend.location 设置为 (0.1, 0.8),将图例位置设置为图表右上角的 80% 垂直位置和 10% 水平位置。
图例位置相对于轴的反向
默认情况下,图例的位置是相对于轴的位置确定的。但是,我们可以通过设置 legend.on_axis 属性为 False,使图例与轴的位置相反。
from bokeh.plotting import figure, show
# 创建一个简单的折线图
p = figure()
p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], legend_label="Line")
# 将图例位置设置为与轴的位置相反
p.legend.location = (0.1, 0.8)
p.legend.on_axis = False
# 显示图表
show(p)
在上述代码中,通过将 legend.on_axis 设置为 False,我们将图例的位置与轴的位置相反。
图例的其它属性
除了位置之外,我们还可以设置图例的其他属性,例如图例的宽度、高度、填充颜色等。这些属性可以通过 legend 对象的相应属性进行设置。
from bokeh.plotting import figure, show
# 创建一个简单的折线图
p = figure()
p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], legend_label="Line")
# 设置图例的宽度、高度和填充颜色
p.legend.width = 200
p.legend.height = 100
p.legend.background_fill_color = "lightgray"
# 显示图表
show(p)
在上面的代码中,我们通过设置 legend.width 和 legend.height 来指定图例的宽度和高度,通过设置 legend.background_fill_color 来指定图例的填充颜色。
通过设置这些属性,我们可以进一步定制图例的外观,使之更符合我们的需求。
总结
在本文中,我们介绍了在 Bokeh 图表中设置图例位置的方法。我们可以使用 legend.location 属性设置预定义的位置选项,也可以使用 (x, y) 元组来自定义图例的位置。此外,我们还可以设置图例的其他属性,如宽度、高度和填充颜色等。通过灵活地设置图例的位置和属性,我们可以创建出更具吸引力和可读性的数据可视化图表。
极客教程