Я хотел бы получить данные из одного контура равномерно распределенных 2D-данных (изображений, подобных данным).
Основываясь на примере, найденном в аналогичном вопросе: Как я могу получить значения (x, y) строки, которые обозначены контурным графиком (matplotlib)?
>>> 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])
>>> cs.collections[0].get_paths()
Результатом этого вызова в cs.collections[0].get_paths()
является:
[Path([[ 4. 1.625 ]
[ 3.25 2. ]
[ 3. 2.16666667]
[ 2.16666667 3. ]
[ 2. 3.25 ]
[ 1.625 4. ]], None)]
На основе графиков этот результат имеет смысл и, по-видимому, представляет собой совокупность (y, x) пар для контурной линии.
Кроме ручного циклирования по этому возвращаемому значению, извлечению координат и сборке массивов для линии, есть ли лучшие способы вернуть данные из объекта matplotlib.path
? Есть ли ошибки, которые следует учитывать при извлечении данных из matplotlib.path
?
Альтернативно, существуют ли альтернативы в пределах matplotlib
или еще лучше numpy
/scipy
, чтобы сделать аналогичную вещь? Идеальная вещь заключалась бы в том, чтобы получить вектор с высоким разрешением пар (x, y), описывающих линию, которые могут быть использованы для дальнейшего анализа, поскольку, как правило, мои наборы данных не являются небольшими или простыми, как пример выше.