По сути, можно убрать построение графиков и вызвать основные функции напрямую, что не очень удобно, но возможно. Решение также не является точным, так как в базовом коде, вероятно, происходит некоторая интерполяция.

ел бы получить данные из одного контура равномерно распределенных 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), описывающих линию, который можно было бы использовать для дальнейшего анализа, поскольку в целом мои наборы данных не являются маленькими или простыми, как в примере выше.

Ответы на вопрос(3)

Ваш ответ на вопрос