Polarkonturdiagramm in Matplotlib

8

Ich habe eine Reihe von Daten, die ich verwenden möchte, um ein Konturdiagramm in Polarkoordinaten mit Matplotlib zu erstellen.

Meine Daten sind die folgenden:

  • theta - 1D Array von Winkelwerten
  • radius - 1D Array von Radiuswerten
  • value - 1D Array von Werten, die ich für die Konturen verwenden möchte

Das sind alles 1D-Arrays, die richtig ausgerichtet sind - zB:

%Vor%

Das heißt, alle Werte werden so oft wiederholt, dass jede Zeile dieser "Tabelle" aus drei Variablen einen Punkt definiert.

Wie kann ich aus diesen Werten ein Polarkonturdiagramm erstellen? Ich habe darüber nachgedacht, die Radius- und Theta-Werte in x- und y-Werte umzurechnen und dies in kartesischen Koordinaten zu tun, aber die Kontur-Funktion scheint 2D-Arrays zu benötigen, und ich kann nicht ganz verstehen warum.

Irgendwelche Ideen?

    
robintw 01.07.2011, 13:26
quelle

2 Antworten

8

Die Funktion contour() von Matplotlib erwartet, dass Daten als 2D-Gitter aus Punkten und entsprechendem Gitter mit Werten für jeden dieser Gitterpunkte angeordnet werden. Wenn Ihre Daten in einem Gitter angeordnet sind, können Sie r, Theta in x, y umwandeln und contour(r*np.cos(theta), r*np.sin(theta), values) verwenden, um Ihre Darstellung zu erstellen.

Wenn Ihre Daten nicht natürlich gerastert sind, sollten Sie dem Rat von Stephen folgen und griddata() verwenden, um Ihre Daten in ein Raster zu interpolieren.

Das folgende Skript zeigt Beispiele für beide.

%Vor%

    
matt 01.07.2011, 17:30
quelle
3

Ich weiß nicht, ob es möglich ist, ein Polarkonturdiagramm direkt zu erstellen, aber wenn Sie in kartesische Koordinaten konvertieren, können Sie das griddata Funktion, um Ihre 1D-Arrays in 2D zu konvertieren.

    
Stephen Terry 01.07.2011 14:58
quelle

Tags und Links