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

如何基于x、y坐标与概率值创建二维概率密度热力图

二维坐标概率热力图实现方案

数据预处理说明

你当前的x、y是一维数组,z也是一维的200个值,但热力图需要二维网格对应的概率矩阵。如果你的数据是离散的(x,y)点对应z值,需要通过插值生成二维网格的概率数据;如果是想生成x-y全网格的概率值,直接生成二维z数组即可。


方案1:基于离散点插值生成热力图

适用于你提供的离散(x,y,z)数据场景:

import numpy as np
import random
import matplotlib.pyplot as plt
from scipy.interpolate import griddata

# 生成原始数据
x = np.linspace(-1, 1, 200)
y = np.linspace(-1, 1, 200)
points = np.array([x, y]).T  # 构造离散点坐标对
z = np.array([random.uniform(0, 1) for _ in range(200)])

# 生成x-y网格
X, Y = np.meshgrid(x, y)

# 插值生成二维概率矩阵(cubic为三次插值,平滑度高;可选linear/nearest)
Z = griddata(points, z, (X, Y), method='cubic')

# 绘制热力图
plt.figure(figsize=(10, 8))
# 填充式热力图,levels控制颜色分层数,cmap指定配色方案
contour_plot = plt.contourf(X, Y, Z, cmap='viridis', levels=50)
# 添加颜色条并标注含义
plt.colorbar(contour_plot, label='概率值')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('二维坐标概率热力图')
plt.show()

方案2:直接生成全网格热力图

如果你的需求是生成x-y所有网格点的概率值,直接构造二维z数组即可:

import numpy as np
import matplotlib.pyplot as plt

# 生成x-y网格
x = np.linspace(-1, 1, 200)
y = np.linspace(-1, 1, 200)
X, Y = np.meshgrid(x, y)

# 生成200x200的二维概率数组
z = np.random.uniform(0, 1, (200, 200))

# 绘制热力图
plt.figure(figsize=(10, 8))
plt.pcolormesh(X, Y, z, cmap='viridis', shading='auto')
plt.colorbar(label='概率值')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('二维坐标概率热力图')
plt.show()

参数调整建议

  • 配色方案:cmap可替换为plasma、inferno、magma、coolwarm等,适配不同视觉需求
  • 平滑度:方案1中method选cubic比linear更平滑;方案2可通过调整linspace的点数(比如从200改到300)提升精细度
  • 颜色分层:contourf的levels参数数值越大,颜色过渡越细腻

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 00:54:10