Bokeh 热力图使用
在本文中,我们将介绍如何使用Bokeh库创建热力图。热力图可以帮助我们直观地展示数据的分布情况和趋势,是数据可视化中常用的一种图表类型。
阅读更多:Bokeh 教程
简介
Bokeh是一个交互式的Python绘图库,用于创建漂亮且功能丰富的可视化图表。它提供了许多可视化工具和布局选项,适用于各类数据可视化任务。热力图是Bokeh库中的一种常用图表类型之一,可以用来展示两个维度的数据分布情况。
创建热力图
要创建一个热力图,我们需要先导入Bokeh库,并为热力图准备好数据。
from bokeh.io import output_file, show
from bokeh.models import BasicTicker, ColorBar, LinearColorMapper, PrintfTickFormatter
from bokeh.plotting import figure
from bokeh.transform import transform
# 准备数据
data = {
'x': [1, 2, 3, 4, 5],
'y': [1, 2, 3, 4, 5],
'values': [
[0.1, 0.2, 0.3, 0.4, 0.5],
[0.2, 0.3, 0.4, 0.5, 0.6],
[0.3, 0.4, 0.5, 0.6, 0.7],
[0.4, 0.5, 0.6, 0.7, 0.8],
[0.5, 0.6, 0.7, 0.8, 0.9]
]
}
# 创建热力图
p = figure(title="Bokeh Heatmap", x_range=[1, 5], y_range=[1, 5])
p.rect(x='x', y='y', width=1, height=1, source=data,
fill_color=transform('values', mapper=LinearColorMapper(palette="Viridis256", low=0, high=1)),
line_color=None)
color_bar = ColorBar(color_mapper=LinearColorMapper(palette="Viridis256", low=0, high=1),
ticker=BasicTicker(desired_num_ticks=5),
formatter=PrintfTickFormatter(format="%f"),
label_standoff=12, border_line_color=None, location=(0, 0))
p.add_layout(color_bar, 'right')
# 输出和展示图像
output_file("heatmap.html")
show(p)
以上代码中,我们首先导入所需的Bokeh库中的组件和函数,然后准备好数据。数据包括x坐标、y坐标以及对应的值。接下来,我们创建一个figure
对象,在这个对象中设置热力图的标题和坐标范围。使用rect
方法创建矩形,设置填充颜色和线条颜色,其中填充颜色通过LinearColorMapper
转换数据集,并选择色板。我们还可以添加颜色条以更好地表示数据的值域范围。最后,使用output_file
将图像保存到指定的HTML文件,并使用show
函数展示图像。
自定义热力图
Bokeh库提供了许多自定义热力图的选项,例如修改颜色映射、调整坐标轴标签等。
from bokeh.io import output_file, show
from bokeh.models import BasicTicker, ColorBar, LinearColorMapper, PrintfTickFormatter
from bokeh.plotting import figure
from bokeh.transform import transform
# 准备数据
data = {
'x': [1, 2, 3, 4, 5],
'y': [1, 2, 3, 4, 5],
'values': [
[0.1, 0.2, 0.3, 0.4, 0.5],
[0.2, 0.3, 0.4, 0.5, 0.6],
[0.3, 0.4, 0.5, 0.6, 0.7],
[0.4, 0.5, 0.6, 0.7, 0.8],
[0.5, 0.6, 0.7, 0.8, 0.9]
]
}
# 创建热力图
p = figure(title="Customized Bokeh Heatmap", x_range=[1, 5], y_range=[1, 5],
toolbar_location=None, tools="")
p.rect(x='x', y='y', width=1, height=1, source=data,
fill_color=transform('values', mapper=LinearColorMapper(palette="RdBu11", low=0, high=1)),
line_color=None)
color_bar = ColorBar(color_mapper=LinearColorMapper(palette="RdBu11", low=0, high=1),
ticker=BasicTicker(desired_num_ticks=11),
formatter=PrintfTickFormatter(format="%f"),
label_standoff=12, border_line_color=None, location=(0, 0),
title="Custom Colorbar Title")
p.add_layout(color_bar, 'right')
p.xaxis.axis_label = "Custom X Label"
p.yaxis.axis_label = "Custom Y Label"
# 输出和展示图像
output_file("custom_heatmap.html")
show(p)
这个示例中,我们在创建figure
对象时加入了一些新的参数。我们通过toolbar_location
将工具栏位置设为无,设置tools
为空。这样可以隐藏工具栏。我们还自定义了热力图的填充颜色和颜色条的色板。在这个示例中,我们选择了RdBu11这个色板,并设置了low
和high
两个参数来调整颜色映射的范围。同时,我们在颜色条中设置了新的标题,通过title
参数传入。
总结
在本文中,我们学习了如何使用Bokeh库创建热力图。通过导入必要的库和组件,准备数据,我们可以轻松地创建热力图,并自定义其外观。热力图是一种直观展示数据分布情况的图表类型,广泛应用于数据可视化领域。希望通过本文的介绍,你对Bokeh库的热力图使用有了更深入的了解。