Polarkonturdiagramm in Matplotlib - beste (moderne) Art, es zu tun?
Update: ich habe ein full write-up, wie ich es gefunden, dies zu tun auf meinem blog unter http://blog.rtwilson.com/producing-polar-contour-plots-with-matplotlib/ - Sie möchten möglicherweise überprüfen Sie es zuerst.
Ich versuche, ein polar-plot contour plot in matplotlib. Ich habe gefunden, verschiedene Ressourcen auf dem internet, (a) ich kann nicht scheinen, um meinen code zu arbeiten, und (b) viele der Ressourcen scheinen ziemlich alt, und ich Frage mich, ob es gibt ein besserer Weg jetzt. Zum Beispiel, http://www.mail-archive.com/[email protected]/msg01953.html deutet darauf hin, dass etwas getan werden kann, um Dinge zu verbessern bald, und das war im Jahr 2006!
Ich würde gerne in der Lage sein, um Handlung ordnungsgemäße polar Kontur-plots - wie pcolor können Sie tun, für seine Art des Grundstücks (siehe auskommentierten Abschnitt unten), aber ich kann nicht scheinen zu finden, irgendeine Möglichkeit, das zu tun, so bin ich der Konvertierung in kartesische Koordinaten erste.
Sowieso, ich habe den code, der folgt:
from pylab import *
import numpy as np
azimuths = np.arange(0, 360, 10)
zeniths = np.arange(0, 70, 10)
values = []
for azimuth in azimuths:
for zenith in zeniths:
print "%i %i" % (azimuth, zenith)
# Run some sort of model and get some output
# We'll just use rand for this example
values.append(rand())
theta = np.radians(azimuths)
values = np.array(values)
values = values.reshape(len(zeniths), len(azimuths))
# This (from http://old.nabble.com/2D-polar-surface-plot-td28896848.html)
# works fine
##############
# Create a polar axes
# ax = subplot(111, projection='polar')
# pcolor plot onto it
# c = ax.pcolor(theta, zeniths, values)
# show()
r, t = np.meshgrid(zeniths, azimuths)
x = r*np.cos(t)
y = r*np.sin(t)
contour(x, y, values)
Wenn ich Laufe, bekomme ich eine Fehlermeldung TypeError: Inputs x and y must be 1D or 2D.
. Ich bin mir nicht sicher, warum ich diese bekommen, da x und y beide sind 2D. Mache ich etwas falsch?
Es scheint auch ziemlich klobig zu sein, dass meine Werte wieder aus meinem Modell in eine Liste und dann Umformen. Gibt es einen besseren Weg, dies zu tun?
InformationsquelleAutor der Frage robintw | 2012-01-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie nur in der Lage sein zu verwenden
ax.contour
oderax.contourf
mit polar plots nur wie Sie normalerweise wäre... Sie haben ein paar bugs in Ihrem code, wenn. Konvertieren Sie die Dinge in Bogenmaß, aber dann verwenden Sie die Werte in Grad, wenn Sie plot. Auch Sie vorbei sind inr, theta
an Kontur, wenn es erwartettheta, r
.Als schnelles Beispiel:
InformationsquelleAutor der Antwort Joe Kington
Form von x -, y-und Werte müssen gleich sein. Ihre Daten Form:
so ändern Sie Kontur(x -, y-Werte) zur Kontur(x -, y-Werte.T).
InformationsquelleAutor der Antwort HYRY