2017-05-09 3 views
-2

Ich habe eine Liste von Tupel von x, y Koordinaten. Welchen Algorithmus sollte ich verwenden, um diese Punkte neu anzuordnen, so dass ich eine Linie durch die Punkte zeichnen kann (Tracing). Probenliste sieht aus wie Punkte = [(170, 156), (154, 154), (162, 148), (178, 164), (135, 166), (131, 166), (150, 158) , (158, 150), (166, 152), (139, 166), (182, 168), (144, 163), (174, 160)] Ich habe bereits versucht, die Punkte basierend auf dem Abstand zwischen den Punkte. Aber ich fand es nicht effizient, da mein Datensatz etwa 400 Koordinaten enthält.Umordnen der Liste der x, y Punkte basierend auf dem kürzesten Abstand zwischen 2 Punkten

Plot-Funktion in matplotlib sollte in der Lage sein, die Spur meines Ziel der points.That

+0

Was meinst du mit "neu anordnen"? Ist es eine polygonale Form? –

+0

Mach etwas Forschung über Graphentheorie. Es klingt, als ob Sie versuchen, den kürzesten Pfad in einem nicht verbundenen Graphen zu finden (ordnen Sie also eine Liste von Punkten basierend auf ihrem nächsten Nachbarn neu an). Ihre aktuelle Erklärung des Problems berücksichtigt nicht, dass zwei Punkte ihre eigenen nächsten Nachbarn sein können, was bedeutet, dass Sie sie nicht gegen jeden anderen Punkt "sortieren" können. Betrachten Sie diese Frage und lesen Sie über die genannten Algorithmen: http://stackoverflow.com/questions/1317874/single-shortest-path-of-an-acyclic-undirected-disconnected-graph – Wrinn

Antwort

0
pts = [(4,2),(1,4),(1,8)] 
df = pd.DataFrame(pts) 
df.sort([0,1]) 

dies die Punkte, die durch den Wert des ersten Elements sortieren, dann durch das zweite Element. So wird Ihre Liste erhöht

+0

Es funktioniert für eine kleine Menge des Datensatzes. Wenn der Datensatz größer wird, geht er nicht den kürzesten Weg. –

Verwandte Themen