如何可视化带温度属性的(x,y)点并关联温度与色阶映射?
问题需求
现有包含x、y坐标及temperature字段的数据集(df.head()结果如下):
| x | y | temperature | |
|---|---|---|---|
| 0 | 14.15 | 49.58 | 47.5 |
| 1 | 13.30 | 34.77 | 41.4 |
| 2 | 12.53 | 42.70 | 32.7 |
| 3 | 11.74 | 45.77 | 34.6 |
| 4 | 18.98 | 42.70 | 70.7 |
已使用如下Holoviews的Datashade代码进行可视化:
opts1 = hv.opts.RGB(width=1700, height=800) df_ds = datashade( hv.Points(df), cmap=cc.CET_L4, kdims=["x", "y"], label="xy cordinate values", colorbar=True, min_alpha=0.3, ).opts(tools=["hover", "box_zoom"]) df_ds.opts(opts1)

现需实现将temperature值与colormap关联,并在可视化中显示temperature数值,请求技术指导。
解决方案
要实现需求,需调整datashade参数、配置Points的数值维度,并自定义hover工具显示内容,具体步骤及代码如下:
1. 核心配置逻辑
- 给
hv.Points指定vdims参数,标记temperature为数值维度,供颜色映射使用 - 修改
datashade的aggregator参数,基于temperature的聚合值生成颜色 - 自定义hover工具的显示字段,明确展示temperature数值
2. 完整修改代码
import holoviews as hv import datashader as ds import colorcet as cc hv.extension('bokeh') opts1 = hv.opts.RGB(width=1700, height=800) # 指定数值维度为temperature points = hv.Points(df, kdims=["x", "y"], vdims=["temperature"]) df_ds = datashade( points, cmap=cc.CET_L4, # 基于temperature的均值聚合映射颜色,可替换为ds.max/ds.min按需选择 aggregator=ds.mean("temperature"), label="Temperature Distribution", colorbar=True, min_alpha=0.3, ).opts( tools=["hover", "box_zoom"], # 自定义hover显示内容 tooltips=[ ("x", "@x"), ("y", "@y"), ("Temperature", "@temperature") ] ) df_ds.opts(opts1)
3. 关键说明
- 聚合函数选择:数据密度高时用
ds.mean平滑显示区域温度;需保留极值时改用ds.max/ds.min - 颜色映射:
cc.CET_L4适配温度数据,也可替换为cc.fire等其他色板 - hover显示:通过
tooltips自定义字段,确保@temperature能正确读取数据集对应值
内容的提问来源于stack exchange,提问作者Debashish Samantaray
相关产品推荐
相关产品推荐

