Подтвердить что ты не робот

Как я могу получить значения (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()
4b9b3361

Ответ 1

Посмотрите на свойство коллекций возвращенного 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

Ответ 2

Просматривать коллекции и извлекать пути и вершины - не самая прямая и самая быстрая вещь. Возвращенный объект Contour фактически имеет атрибуты для сегментов с помощью cs.allsegs, который возвращает вложенный список формы [уровень] [элемент] [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