如何绘制一个紧密包含散点图中所有点的阴影区域?

问题描述 投票:0回答:1

我有一对 y 和 z 位置,我将它们绘制为散点图,如下所示。

yz loc scatter

查看该图,我们可以看到包含所有点的紧密边界。我的问题是我们如何在 python 中绘制这个边界?理想情况下,我希望有一个代表该区域的填充区域。

我查看了 scipy.spatial.ConvexHull,但它无法捕获较低的曲线。 我的尝试:

plt.scatter(yloc, zloc)

points = np.column_stack((yloc, zloc))
hull = ConvexHull(points)

for simplex in hull.simplices:
    plt.plot(points[simplex, 0], points[simplex, 1], 'r-')

ConvexHull attempt

如果您想使用数据,可以在这里找到。 Y 位置位于标题“Points:1”下方,Z 位置位于“Points:2”下方。

python matplotlib scatter-plot
1个回答
0
投票

你尝试过alphashape吗?文档:https://pypi.org/project/alphashape/

import numpy as np
import matplotlib.pyplot as plt
import alphashape
from descartes import PolygonPatch

fig, ax = plt.subplots()

x = np.random.rand(15)
y = np.random.rand(15)

points = np.column_stack((x, y))
ax.scatter(x, y)

alpha = 0.5  # Adjust this value to capture the shape better
alpha_shape = alphashape.alphashape(points, alpha)
ax.add_patch(PolygonPatch(alpha_shape, alpha=alpha))

plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.