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