如何使用Bokeh库在Python中可视化双轴?
Bokeh是一个Python可视化库,用于创建交互式和漂亮的Web可视化工具。从简单的折线图到复杂的交互式仪表板,Bokeh让创建可视化变得相对容易。在本文中,我们将学习如何使用Bokeh来实现在Python中的双轴可视化。
更多Python教程,请阅读:Python 教程
双轴绘制
在许多可视化场景中,我们需要在同一图表中可视化两种不同的数据,并且这些数据的规模或单位可能不同。在这种情况下,使用双轴可视化可以让我们更好地理解两种数据之间的关系。
Bokeh提供了名为twinx
和twin
的函数,使我们可以在同一图表中绘制两个不同的坐标轴。可以使用这两个函数中的任何一个为我们的图形添加第二个轴。
让我们思考一个简单的例子,比较两种产品的销售量,以及与之相关的平均单价和总收入。
from bokeh.layouts import gridplot
from bokeh.models import ColumnDataSource
from bokeh.plotting import figure, show
# 定义数据
months = ['Jan', 'Feb', 'Mar', 'Apr']
sales = [100, 150, 200, 175]
price = [2.5, 2.3, 2, 2.2]
revenue = [250, 345, 400, 385]
# 创建数据源
source = ColumnDataSource(data=dict(x=months, y1=sales, y2=price, y3=revenue))
# 创建第一个轴
p1 = figure(x_range=months, title='Sales & Price')
p1.line(x='x', y='y1', source=source, color='red', line_width=3)
p1.yaxis.axis_label = 'Sales'
# 创建第二个轴
p2 = figure(x_range=p1.x_range, y_range=(0, 3), title='Sales & Price')
p2.line(x='x', y='y2', source=source, color='blue', line_width=3)
p2.yaxis.axis_label = 'Price'
# 创建第三个轴
p3 = figure(x_range=p1.x_range, title='Revenue', y_range=(0, 500))
p3.line(x='x', y='y3', source=source, color='green', line_width=3)
p3.yaxis.axis_label = 'Revenue'
# 将三个图的布局放置在一个图形中
layout = gridplot([[p1, p2], [p3, None]])
# 显示输出
show(layout)
这个例子中,我们首先定义了名为months
,sales
,price
和revenue
的四个列表,它们存储了四个月的销售量、平均价格和总收入的数据。然后我们使用ColumnDataSource
创建了一个数据源,用于存储这些数据。
接下来,我们创建了三个名为p1
,p2
和p3
的图形,并对其进行了相应的设置。我们使用第一个图像中的line()
函数在p1
图像上绘制了销售量数据,并使用第二个图像中的函数在p2
上绘制了价格数据。最后,我们在第三个图像p3
上绘制了总收入。
在完成所有三个图像的设置后,我们使用gridplot
将三个图像集成到一个单一的图形中。
我们可以执行上面的代码并查看Bokeh在Jupyter Notebook(或任何其他Python环境)中的输出。
Bokeh通过多种方式提供了与这个可视化图形交互的选项。您可以使用Bokeh提供的缩放、平移和缩放工具对图形进行深入探索。
结论
在本文中,我们讨论了如何在Python中使用Bokeh库来实现双轴可视化。我们学习了如何使用twinx
和twin
函数,在同一图形中绘制两个不同的坐标轴,并使用示例代码演示了如何创建一个可视化图。
Bokeh是一个功能强大的Python可视化库,可以帮助我们美化和交互式地呈现数据。它提供了许多可视化选项,并且可以轻松地将可视化结果嵌入到Web应用程序中,这使其成为许多应用场景中的流行选择。