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)
在上述代码中,我们首先导入了需要使用的 figure
、show
、gridplot
和 Legend
类。接下来,我们创建了两个简单的图表 p1
和 p2
,并为它们设置了标题、宽度和高度。然后,我们使用 circle
和 line
方法在图表中绘制了两个数据源。
接着,我们创建了一个共享的图例 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 中创建具有共享图例的多个图表。我们通过示例代码演示了如何创建多个图表,并使用共享图例保持一致的标签和颜色。此外,我们还介绍了如何自定义图例的位置以及如何隐藏图例。通过掌握这些技巧,您将能够更好地展示数据,并提高数据解读的效率和准确性。