Python: найти контурные линии из matplotlib.pyplot.contour ()
Я пытаюсь найти (но не рисовать!) Контурные линии для некоторых данных:
from pprint import pprint
import matplotlib.pyplot
z = [[0.350087, 0.0590954, 0.002165], [0.144522, 0.885409, 0.378515],
[0.027956, 0.777996, 0.602663], [0.138367, 0.182499, 0.460879],
[0.357434, 0.297271, 0.587715]]
cn = matplotlib.pyplot.contour(z)
я знаюcn
содержит контурные линии, которые я хочу, но я не могу добраться до них. Я пробовал несколько вещей:
print dir(cn)
pprint(cn.collections[0])
print dir(cn.collections[0])
pprint(cn.collections[0].figure)
print dir(cn.collections[0].figure)
но безрезультатно. я знаюcn
этоContourSet
, а такжеcn.collections
это массивLineCollection
s. Я бы подумалLineCollection
это массив отрезков, но я не могу понять, как извлечь эти отрезки.
Моя конечная цель - создать файл KML, который будет отображать данные на карте мира, а также контуры для этих данных.
Однако, поскольку некоторые из моих точек данных расположены близко друг к другу, а другие - далеко, мне нужны фактические полигоны (линии линий), которые составляют контуры, а не просто растровое изображение контуров.
Я несколько удивленqhull
не делает что-то подобное
Используя Mathematica'sListContourPlot
и затем экспорт как SVG работает, но я хочу использовать что-то с открытым исходным кодом.
Я не могу использовать хорошо известный алгоритм CONREC, потому что мои данные не находятся в сетке (не всегда есть несколько значений y для данного значения x, и наоборот).
Решение не обязательно для Python, но должно быть с открытым исходным кодом и работоспособным в Linux.