Я пытаюсь найти (но не нарисовать!) Контурные линии для некоторых данных:
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
. Я бы подумал, что LineCollection
- это массив сегментов линии, но я не могу понять, как извлечь эти сегменты.
Моя конечная цель - создать файл KML, который отображает данные на карте мира, а также контуры для этих данных.
Однако, поскольку некоторые из моих точек данных расположены близко друг к другу, а другие находятся далеко, мне нужны фактические многоугольники (линии линий), составляющие контуры, а не просто растровое изображение контуров.
Я несколько удивлен, что qhull
не делает ничего подобного.
Использование ListContourPlot
в системе Mathematica и последующий экспорт в формате SVG, но я хочу использовать что-то с открытым исходным кодом.
Я не могу использовать хорошо известный алгоритм CONREC, потому что мои данные не находятся на сетке (не всегда есть несколько значений y для данного значения x, и наоборот).
Решение не обязательно на Python, но должно иметь открытый исходный код и запускаться в Linux.