Vom kartesischen Plot zum polaren Histogramm mit Mathematica

8

Bitte beachten Sie:

%Vor%

Was ich tun möchte, ist, für jeden Punkt seinen Winkel in einem Koordinatensystem wie:

zu berechnen

Oben ist die Deisred-Ausgabe, das sind die Häufigkeitszählungen von Punkten, die einem bestimmten "Angle Bin" zugewiesen wurden. Sobald ich weiß, wie man den Winkel berechnet, sollte ich das tun können.

    
500 14.09.2011, 16:15
quelle

3 Antworten

12

Mathematica hat zu diesem Zweck eine spezielle Plotfunktion: ListPolarPlot . Sie müssen Ihre x, y-Paare in Theta-, R-Paare konvertieren, zum Beispiel wie folgt:

%Vor%

AKTUALISIEREN

Wie in jedem Kommentar gefordert, können Polarhistogramme wie folgt erstellt werden:

%Vor%

Einige Testdaten:

%Vor%

%Vor%

Eine kleine visuelle Verbesserung mit Disk Sektoren anstelle von Polygon s:

%Vor%

Eine klarere Trennung der "Balken" wird durch Hinzufügen von EdgeForm[{Black, Thickness[0.005]}] in Epilog erreicht. Jetzt haben die Zahlen, die die Ringe markieren, immer noch den unnötigen Dezimalpunkt hinter ihnen. Nach der Handlung mit dem Ersatz /. Style[num_?MachineNumberQ, List[]] -> Style[num // Round, List[]] entfernt diese. Das Endergebnis ist:

Das obige Diagramm kann auch mit SectorChart erstellt werden, obwohl dieses Diagramm in erster Linie dazu gedacht ist, die Breite und Höhe der Daten zu ändern, und nicht für Diagramme, für die Sie Sektoren mit fester Breite ausgewählt haben Markieren Sie Richtungen und Daten in diesen Richtungen. Aber es kann mit SectorOrigin gemacht werden. Das Problem ist, ich nehme an, dass der Mittelpunkt eines Sektors für seine Richtung codiert, also um 0 Grad in der Mitte eines Sektors muss ich den Ursprung um \[Pi]/angleDivisions versetzen und die Ticks von Hand angeben, wenn sie auch gedreht werden:

%Vor%

Die Handlung ist fast die gleiche, aber es ist interaktiver (Tooltips und so).

    
Sjoerd C. de Vries 14.09.2011, 18:35
quelle
5

Das scheint das Polarkoordinatensystem zu sein. Die Umrechnungsformeln von Cartesian zu Polar sind im selben Artikel :

Dies gibt den Winkel im Bogenmaß zurück.

    
Blender 14.09.2011 16:19
quelle
5

Dies

%Vor%

gibt die Liste der Winkel des Strahls von ScreenCenter zu jedem Punkt im Bogenmaß und zwischen -pi und pi zurück.

Das heißt, ich nehme an, Sie wollen den Winkel zwischen jedem Punkt in Ihrem Plot und dem roten Punkt.

Beachten Sie die Verwendung von ArcTan[x,y] anstelle von ArcTan[y/x] , wodurch automatisch das entsprechende Zeichen ausgewählt wird (andernfalls müssten Sie es wie in @ Blenders Antwort manuell durchführen).

    
acl 14.09.2011 17:48
quelle

Tags und Links