Python: znajdź linie konturowe z matplotlib.pyplot.contour ()
Próbuję znaleźć (ale nie rysować!) Linie konturu dla niektórych danych:
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)
wiemcn
zawiera linie konturowe, które chcę, ale nie mogę do nich dotrzeć. Próbowałem kilku rzeczy:
print dir(cn)
pprint(cn.collections[0])
print dir(cn.collections[0])
pprint(cn.collections[0].figure)
print dir(cn.collections[0].figure)
bezskutecznie. wiemcn
jestContourSet
, icn.collections
jest tablicąLineCollection
s. PomyślałbymLineCollection
to tablica segmentów linii, ale nie wiem, jak wyodrębnić te segmenty.
Moim ostatecznym celem jest stworzenie pliku KML, który drukuje dane na mapie świata, a także kontury dla tych danych.
Ponieważ jednak niektóre z moich punktów danych są blisko siebie, a inne są daleko, potrzebuję rzeczywistych wielokątów (linestings), które tworzą kontury, a nie tylko zrasteryzowany obraz konturów.
Jestem trochę zaskoczonyqhull
nie robi czegoś takiego.
Korzystanie z MathematicaListContourPlot
a następnie eksportowanie jako SVG działa, ale chcę użyć czegoś open source.
Nie mogę użyć dobrze znanego algorytmu CONREC, ponieważ moje dane nie znajdują się w siatce (nie zawsze jest wiele wartości y dla danej wartości x i odwrotnie).
Rozwiązanie nie musi być pythonem, ale musi być open source i działać na Linuksie.