2014-09-23 1 views
0

주어진 contour line이 Matplotlib의 contour() 함수를 통해 어떻게 생성되는지 궁금합니다. 각 레벨을 반복하여 정점을 얻을 수 있습니다. 나는이 코드의 경로를 반복 수 있다는 사실을 알고 :윤곽의 각 레벨 얻기 - Matplotlib

그러나
cs = plt.contour(x, y, (f - g)) 
for collection in cs.collections: 
    paths = collection.get_paths() 
    for path in paths: 
     print(path.vertices.shape) 

plt.show() 

, 어떻게 각 경로의 수준을 찾을 수도 있고, 직접 윤곽 각 레벨을 반복?

감사합니다.

+0

'cs.levels'는 각 윤곽에 대한 레벨을 제공해야합니다. – tom10

답변

0

이것은 매우 분명 할 수 있지만 제안 된 코드에주의가 필요하다는 점을 강조하고 싶습니다. 이 https://github.com/matplotlib/matplotlib/issues/367

각 경로는 대부분의 사람들이 기대하는 단일 열리거나 닫힌 다각형에 해당하는 정점의 단지 배열 될 수 있지만 경로는 2 개 이상의 폴리곤 경우에 해당 할 수있다 :

도 참조 멤버 코드는 폴리곤이 시작하는 인덱스를 나타내도록 설정됩니다. 경로의 순수한 사용은 원하는 것이 아닐 수도 있습니다. 종종 path.to_polygons()의 사용이 더 좋습니다.

요약하면이 코드는 대부분의 간단한 예제에서 예상대로 작동하지만 복잡한 경우에는 문제가 발생할 수 있습니다. 더 나은 대안은 다음과 같습니다 :

cs = plt.contour(x, y, (f - g)) 
for collection in cs.collections: 
    for path in collection.get_paths(): 
     print path.to_polygons()