python画弯曲的线_如何用Python在一组点上绘制多边形(部分向内弯曲)边?

本文探讨如何在Python中使用K均值聚类数据后,根据聚类点绘制包含凹面的多边形边界。通过利用ConvexHull函数,作者遇到边界的内弯问题,并寻求其他模块或方法来实现凹面多边形的绘制。
摘要由CSDN通过智能技术生成

我试着在下面的K均值聚类图上画一个多边形(凹面)边(图1)。

790747c63fccc5019b4923120f52ed22.png

在@ypnos的帮助下,这段代码绘制了除边缘之外的所有内容。df = pd.read_csv('https://raw.githubusercontent.com/MachineIntellect/dataset.ml/master/watermelon/watermelon_4_0.csv')

X = df.iloc[:,1:].to_numpy()

m0 = X[5]

m1 = X[11]

m2 = X[23]

centroids = np.array([m0, m1, m2])

labels = pairwise_distances_argmin(X, centroids)

m0 = X[labels == 0].mean(0)

m1 = X[labels == 1].mean(0)

m2 = X[labels == 2].mean(0)

new_centroids = np.array([m0, m1, m2])

plt.xlim(0.1,0.9)

plt.ylim(0, 0.8)

plt.scatter(X[:,0], X[:,1])

plt.scatter(new_centroids[:,0], new_centroids[:,1], c='r', marker = '+')

for i in range(3):

points = X[labels == i]

hull = ConvexHull(points)

for simplex in hull.simplices:

plt.plot(points[simplex, 0], points[simplex, 1], 'r-')

BZNEc.png

(图2)

问题是图1中箭头所指的边与图2中的对应不同。

箭头指向的多边形边缘向内弯曲(多亏了@dwilli)。

感谢@ImportanceOfBeingErnest的提醒,scipy.spatial.ConvexHull可能无法产生凹面。

是否有其他模块/包装进行此操作(凹面)?

任何暗示都将不胜感激。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值