gpt4 book ai didi

python - 边界处的插值掩码

转载 作者:行者123 更新时间:2023-12-04 13:35:48 27 4
gpt4 key购买 nike

我想使用 Plotly 生成 Z 值和显示之间梯度的热图。
我遇到的问题是能够有效地屏蔽在没有数据点的“凹面”区域中通过插值形成的不需要的数据。

最佳答案

一种解决方案(可能不是最优雅的)是找到点的边界(凹 shell ),然后将边界外的任何内容设置为 nan .

要找到边界,您可以使用 alphashape并确定是否grid_z点位于您可以使用的边界之内(或之上)shapely .

这是一个在第一个 plotly 绘图之前出现的示例:

from shapely.geometry import Polygon, Point
import alphashape

mpoints = [Point(X, Y) for X, Y in zip(x, y)]

alpha=.125
hull = alphashape.alphashape(mpoints, alpha)
poly = Polygon(hull)

grid_gz = grid_z
gx = np.arange(min(x), max(x),1)
gy = np.arange(min(y), max(y),1)
for i, gxi in enumerate(gx):
for j, gyi in enumerate(gy):
if not np.isnan(grid_gz[j,i]): #UPDATE: no need to test pts that are already NaN
p1 = Point(gxi, gyi)
test = poly.contains(p1) | poly.touches(p1)
if test==False:
grid_gz[j,i]=np.nan

fig = go.Figure()

fig.add_trace(
go.Heatmap(z=grid_gz,x0=min(x),y0=min(y),showscale=True, zsmooth='best',
connectgaps=False, colorscale='Hot'
))

fig.add_trace(
go.Scatter(
x=x,
y=y,mode="markers",marker_size=2,marker_color="black",
))

fig.update_layout(
width = 1200,
height = 1200,
title = "Gradient Heatmap Plot",
yaxis = dict(
scaleanchor = "x",
scaleratio = 1,
))

fig.show()

进一步评论:
  • 我最终手动选择了 alpha 值。您可以使用 optimizealpha找到 alpha 值,但这个值最终有点过于自然,并且一个边缘在热图中有台阶。见 here以及。
  • 更多信息可咨询herealphashape .
  • 更多信息可咨询here关于匀称的containsheretouches

  • enter image description here

    关于python - 边界处的插值掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62117266/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com