2014-09-23 3 views
0

Мне интересно, как, если контурные линии генерируются через функцию contour() от Matplotlib, можно перебирать каждый уровень, чтобы получить его вершины. Я знаю, что я могу перебрать дорожки с этим кодом:Получите каждый уровень контура - 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() 
Смежные вопросы