【发布时间】:2013-08-29 05:08:56
【问题描述】:
我从两个 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 坐标绘制热图?
【问题讨论】:
-
pcolor和pcolormesh? -
感谢您的提示。您是否有使用这些的带有 3d 坐标到热图的代码示例?再次感谢
-
您的数据不是 3d。您有一个二维数组,您可以在其中计算函数,数组中的每个点都有一个对应的 x、y 坐标。所以这与available demonstrations 完全相同。如果您有三个定义 n 个点的 1d 数组 x、y 和 z,那将是 3d。
标签: python matplotlib plot heatmap