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

如何在Holoviews中绘制HeatMap?绘制遇阻,需用颜色表示数量

用Holoviews绘制基于频次的热力图(类直方图效果)

嘿,我来帮你搞定这个Holoviews热力图的问题!你要的应该是基于x、y数值对的频次统计热力图——也就是把x和y分成不同区间,每个区间内的样本数量用颜色深浅来体现,和直方图的统计逻辑一致对吧?下面给你两种实用的实现方案,附代码和说明:

1. 先准备环境和示例数据

首先确保你已经装了Holoviews和依赖库,然后生成/导入你的数据:

import numpy as np
import holoviews as hv
hv.extension('bokeh')  # 选择Bokeh作为渲染后端,也可以换成'matplotlib'

# 这里用随机数据做示例,你替换成自己的真实数据即可
np.random.seed(42)
x = np.random.normal(0, 1, 1000)  # 你的X轴数值
y = np.random.normal(0, 1, 1000)  # 你的Y轴数值

2. 方案一:HexTiles 六边形分箱热力图

这种方式适合大数据量,视觉效果更柔和,Holoviews会自动帮你统计每个六边形内的样本数量:

# 直接传入x、y数据创建HexTiles
hextile_heatmap = hv.HexTiles((x, y))

# 配置样式,让图表更直观
hextile_heatmap.opts(
    width=600, height=500,
    colorbar=True,  # 显示颜色对应的频次刻度条
    cmap='viridis',  # 颜色映射,你可以换成其他比如'plasma'
    title='六边形分箱 频次热力图',
    xlabel='X轴数值', ylabel='Y轴数值',
    tools=['hover']  # 鼠标悬停显示具体频次
)

3. 方案二:矩形分箱的HeatMap(严格对应直方图逻辑)

如果需要规整的矩形格子,先手动计算二维直方图的频次,再转成HeatMap:

# 第一步:计算二维直方图
bins = 20  # 自定义分箱数量,数值越大格子越密
hist_counts, x_edges, y_edges = np.histogram2d(x, y, bins=bins)

# 第二步:整理成HeatMap需要的数据格式:(x中心, y中心, 频次)
x_centers = (x_edges[:-1] + x_edges[1:]) / 2  # 计算每个x分箱的中心值
y_centers = (y_edges[:-1] + y_edges[1:]) / 2  # 计算每个y分箱的中心值

# 把二维数组转成HeatMap需要的列表格式
heatmap_data = []
for i, xc in enumerate(x_centers):
    for j, yc in enumerate(y_centers):
        heatmap_data.append((xc, yc, hist_counts[i, j]))

# 第三步:创建HeatMap并配置样式
rect_heatmap = hv.HeatMap(heatmap_data)
rect_heatmap.opts(
    width=600, height=500,
    colorbar=True,
    cmap='viridis',
    title='矩形分箱 频次热力图',
    xlabel='X轴数值', ylabel='Y轴数值',
    tools=['hover']
)

常见问题排查

  • 如果你的数据存在Pandas DataFrame里,直接传列名就行,比如hv.HexTiles(your_df, kdims=['x_column', 'y_column'])
  • 要是图表不显示,记得先调用hv.extension()加载渲染后端(Bokeh/Matplotlib二选一)
  • 分箱效果不满意的话,HexTiles可以用extents参数限定坐标范围,或者调整bins参数;矩形分箱直接修改bins的数值就行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:58:00