2016-03-27 99 views
3

這裏是我試過代碼:如何在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行我上面的代碼。

可能是這個問題/答案會幫助其他人。

+0

我想你應該按他們的極角對點進行排序然後繪製它們。 – jure

+2

請將此更新添加爲答案,以便其他人可以看到問題已解決。 – jure

回答

2

其實我剛剛找到了答案。正是在SciPy的官方網站:

我們也有直接使用的船體,這對於2-d,保證是按逆時針順序 的頂點,所以做我想做什麼,我只是需要使用方法:

plt.fill(points[hull.vertices,0], points[hull.vertices,1], 'k', alpha=0.3)

,而不是最後的4行我上面的代碼。

可能是這個問題/答案會幫助其他人。

相關問題