Как я могу получить (x, y) значения линии, которая строится контурным графиком?

Есть ли простой способ получить (x, y) значения контурной линии, которая была построена так:

import matplotlib.pyplot as plt
x = [1,2,3,4]
y = [1,2,3,4]
m = [[15,14,13,12],[14,12,10,8],[13,10,7,4],[12,8,4,0]]
cs = plt.contour(x,y,m, [9.5])
plt.show()
13.10.2009 13:57:47
2 ОТВЕТА
РЕШЕНИЕ

Посмотрите на свойство коллекций возвращенного ContourSet. В частности, метод get_paths () первой коллекции возвращает парные точки, составляющие каждый отрезок.

cs.collections[0].get_paths()

Чтобы получить массив координат NumPy, используйте Path.verticesатрибут.

p1 = cs.collections[0].get_paths()[0]  # grab the 1st path
coor_p1 = p1.vertices
12
30.03.2018 20:26:25
Это действительно полезно, спасибо! Знаете ли вы какой-нибудь способ получения / интерполяции одинаково расположенных точек на кривой контура? (очки, возвращенные таким образом, распределены не одинаково)
Tropilio 28.06.2019 16:48:14

Просматривать коллекции и извлекать пути и вершины - не самая прямая и самая быстрая вещь. Возвращенный объект Contour фактически имеет атрибуты для сегментов via cs.allsegs, которые возвращают вложенный список формы [level] [element] [vertex_coord]:

num_levels = len(cs.allsegs)
num_element = len(cs.allsegs[0])  # in level 0
num_vertices = len(cs.allsegs[0][0])  # of element 0, in level 0
num_coord = len(cs.allsegs[0][0][0])  # of vertex 0, in element 0, in level 0

Следовательно, вершины всех путей могут быть извлечены как:

cs.allsegs[i][j]  # for element j, in level i

См. Ссылку: https://matplotlib.org/3.1.1/api/contour_api.html.

0
26.08.2019 10:01:49