Bokeh 创建具有共享图例的多个图表

Bokeh 创建具有共享图例的多个图表

在本文中,我们将介绍如何在 Bokeh 中创建具有共享图例的多个图表。Bokeh 是一个功能强大的 Python 数据可视化库,可以创建交互式和漂亮的图表。通过共享图例,我们可以在多个图表之间保持一致的标签和颜色,使得数据的解读更加直观和方便。

阅读更多:Bokeh 教程

创建多个图表

首先,让我们创建两个简单的图表,每个图表都包含一个数据源,并具有共享的图例。

from bokeh.plotting import figure, show
from bokeh.layouts import gridplot
from bokeh.models import Legend

# 创建第一个图表
p1 = figure(title="图表1", plot_width=400, plot_height=300)
p1.circle([1, 2, 3], [2, 4, 6], color="red", legend_label="数据1")

# 创建第二个图表
p2 = figure(title="图表2", plot_width=400, plot_height=300)
p2.line([1, 2, 3], [1, 3, 5], color="blue", legend_label="数据2")

# 创建一个共享的图例
legend = Legend(items=[
    ("数据1", [p1.circle]),
    ("数据2", [p2.line])
], location="top_left")

# 将图例添加到图表中
p1.add_layout(legend)
p2.add_layout(legend)

# 将两个图表放在一个 gridplot 中
p = gridplot([[p1, p2]])

# 显示图表
show(p)

在上述代码中,我们首先导入了需要使用的 figureshowgridplotLegend 类。接下来,我们创建了两个简单的图表 p1p2,并为它们设置了标题、宽度和高度。然后,我们使用 circleline 方法在图表中绘制了两个数据源。

接着,我们创建了一个共享的图例 legend,其中包含了每个图表对应的标签和绘图方法。我们将图例放置在左上角。

然后,我们使用 add_layout 方法将图例添加到每个图表中。

最后,我们使用 gridplot 将两个图表放在一个网格中,并使用 show 方法显示整个图表。

运行上述代码,我们就可以看到一个包含两个图表和共享图例的界面。

自定义图例位置

除了将图例放置在左上角之外,我们还可以将图例放置在其他位置,以满足特定需求。

下面的代码将图例放置在右上角:

# 创建第一个图表
p1 = figure(title="图表1", plot_width=400, plot_height=300)
p1.circle([1, 2, 3], [2, 4, 6], color="red", legend_label="数据1")

# 创建第二个图表
p2 = figure(title="图表2", plot_width=400, plot_height=300)
p2.line([1, 2, 3], [1, 3, 5], color="blue", legend_label="数据2")

# 创建一个共享的图例
legend = Legend(items=[
    ("数据1", [p1.circle]),
    ("数据2", [p2.line])
], location="top_right")

# 将图例添加到图表中
p1.add_layout(legend)
p2.add_layout(legend)

# 将两个图表放在一个 gridplot 中
p = gridplot([[p1, p2]])

# 显示图表
show(p)

在上述代码中,我们只需将 location 参数设置为 "top_right",即可将图例放置在右上角。

隐藏图例

有时候,我们可能希望隐藏图例,只展示图表本身。

下面的代码演示了如何隐藏图例:

# 创建第一个图表
p1 = figure(title="图表1", plot_width=400, plot_height=300)
p1.circle([1, 2, 3], [2, 4, 6], color="red", legend_label="数据1")

# 创建第二个图表
p2 = figure(title="图表2", plot_width=400, plot_height=300)
p2.line([1, 2, 3], [1, 3, 5], color="blue", legend_label="数据2")

# 创建一个共享的图例,并设置为隐藏
legend = Legend(items=[
    ("数据1", [p1.circle]),
    ("数据2", [p2.line])
], location="top_right", visible=False)

# 将图例添加到图表中
p1.add_layout(legend)
p2.add_layout(legend)

# 将两个图表放在一个 gridplot 中
p = gridplot([[p1, p2]])

# 显示图表
show(p)

在上述代码中,我们将 visible 参数设置为 False,即可隐藏图例。这将使图表只展示数据而不包含任何图例。

总结

本文介绍了如何在 Bokeh 中创建具有共享图例的多个图表。我们通过示例代码演示了如何创建多个图表,并使用共享图例保持一致的标签和颜色。此外,我们还介绍了如何自定义图例的位置以及如何隐藏图例。通过掌握这些技巧,您将能够更好地展示数据,并提高数据解读的效率和准确性。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Bokeh 问答