這裏是我試過代碼:如何在Python中使用matplotlib填充多邊形內的區域?
from scipy.spatial import ConvexHull
points = np.random.rand(30, 2) # 30 random points in 2-D
hull = ConvexHull(points)
import matplotlib.pyplot as plt
%matplotlib inline
corners=[]
for simplex in hull.simplices:
corners+=list(simplex)
plt.fill(points[corners, 0], points[corners, 1], 'k',alpha=0.3)
唯一的情節,我可以得到的是: Convex Hull of random set of points in matplotlib 正如你可以看到它是部分填充。
但我想這個多邊形內的所有區域都應該填充。
這樣做的方法是什麼?
我感謝您的任何建議!
Upd:An Answer !!!
其實我剛剛找到了答案。正是在the official site of SciPy:
我們也有直接用船體的頂點,這對於2-d,保證是按逆時針順序
所以做我想做什麼,我只是需要使用方法:
plt.fill(points[hull.vertices,0], points[hull.vertices,1], 'k', alpha=0.3)
,而不是最後的4行我上面的代碼。
可能是這個問題/答案會幫助其他人。
我想你應該按他們的極角對點進行排序然後繪製它們。 – jure
請將此更新添加爲答案,以便其他人可以看到問題已解決。 – jure