You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HoloViews热力图子图共享xy轴但色条独立的实现方法

Holoviews 共享xy轴+独立色条热力图实现方案

问题原因

Holoviews给布局设置shared_axes=True时,默认会对同类型元素同时开启两类联动:

  • 位置维度(x、y轴)的范围、平移、缩放操作
  • 值维度(热力图对应颜色映射的z轴)的范围匹配
    如果不做额外配置,两类联动会同时生效,当不同子图的z值范围差异较大时,小范围数据的色条会被全局范围压缩,完全无法展示真实分布;如果直接设置shared_axes=False,又会同时关闭xy轴的联动,无法满足坐标轴对齐的需求。

解决方法

不需要调整shared_axes的全局开关,只要在每个子图的配置里显式指定自身的颜色范围clim,就可以打断值维度的全局联动,同时保留xy轴的共享联动效果。这个逻辑对所有带颜色映射的Holoviews元素(比如Image、QuadMesh等)都生效,不是只针对HeatMap。

修改后的可运行代码如下:

import holoviews as hv
import numpy as np
hv.extension('bokeh')

X, Y = np.meshgrid(np.linspace(-1, 1, 101), np.linspace(-2, 2, 201))
Z1 = X ** 2 + Y ** 2
Z2 = 0.2 * np.sin(X + 100) + 0.1 * np.cos(Y * 10)

props_subplots = [(Z1, "viridis", "Z1"), 
                  (Z2, "Greens_r", "Z2")]

hv.Layout([hv.HeatMap((X, Y, data)).opts(
    frame_width=200,
    colorbar=True,
    cmap=cmap,
    title=title,
    # 单独绑定当前子图的颜色上下限,跳过全局色条联动
    clim=(data.min(), data.max())
) for data, cmap, title in props_subplots]).opts(shared_axes=True)

实现效果

  • 对任意子图做x/y轴的平移、缩放操作,另一子图会同步响应,坐标轴始终保持对齐
  • 两个子图的色条完全独立,各自匹配自身数据的数值区间:Z1色条范围为05,对应抛物面的数值分布;Z2色条范围约为-0.30.3,可以正常展示小振幅的波动纹理,不会出现被大范围数据压缩导致的显示异常。

内容的提问来源于stack exchange,提问作者mcsoini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 13:15:47