我从两个 linspaces 开始,然后对它们进行网格网格化。然后我在网格上计算一个函数的值。我的函数被称为cpt_hcpv()
. 然后我想对我的数据进行热图,网格上的每个点都有对应的函数值。
代码看起来像
poro = np.linspace(min(poro), max(poro))
sw = np.linspace(min(sw), max(sw))
g = np.meshgrid(poro, sw)
points = zip(*(x.flat for x in g))
hcpv = []
for p in points:
hcpv = hcpv + [cpt_hcpv(p[0], p[1], poro, sw)]
和
def cpt_hcpv(pCut, sCut, poro, sw):
#find points belonging to calculation
truncated = [(p, s) for p, s in zip(poro, sw) if p > pCut and s < sCut ]
hcv = 0
for k in truncated:
hcv += p*(1-s)*0.5
return hcv
为什么我不cpt_hcpv()
直接在网格上计算:因为我必须在理解中处理条件,truncated = [(p, s) for p, s in zip(poro, sw) if p > pCut and s < sCut ]
所以我必须迭代网格中的点。我不知道如何迭代网格网格。
所以,我想从 3d 坐标绘制热图:在points
我有 x 和 y 的点和hcpv
我有每个点的 z 参数,以相同的顺序。
从我发现的示例中,有 pylab 和 matplotlib 解决方案可以从网格网格 + 网格上计算的值绘制热图,方法以网格网格为参数。
有没有办法从 3d 坐标绘制热图?