2017-12-08 2 views
0

Ich versuche Stromlinien in Polarkoordinaten mit Matplotlib zu plotten. Einige Probleme scheinen jedoch in den Bereichen des Polarplots zu liegen. Hier ist ein kurzes Beispiel, das Problem zu veranschaulichen: Schlechte Reichweite des polaren Stromplots mit Matplotlib

import numpy as np 
import matplotlib.pyplot as plt 

r1 = np.linspace(0.5, 1, 50) 
r2 = np.logspace(np.log10(0.5), np.log10(1.), 50) 
t = np.linspace(0, 2*np.pi, 360) 
r = r1 

tt, rr = np.meshgrid(t, r) 
v = 0*rr 
u = rr 

fig = plt.figure(figsize=(10,10)) 
ax = fig.add_subplot(1,1,1, projection='polar') 
ax.streamplot(t, r, v, u, density=1., color='k', linewidth=3) 
plt.show() 
plt.close() 

Mit r=r1 (linspace), gibt es kein Problem. Aber mit r=r2 ist der radiale Bereich der Kurve falsch und variiert in [0,5, 0,82] anstelle von [0,5, 1].

Was ist falsch an meinem Code?

+1

Ich vermute, das Problem ist eher, dass die Dampflinien zwischen "[3.16, 6.8]" und nicht zwischen "[10 ** 0.5, 10 ** 1] = [3.16, 10]" liegen, also ist die Untergrenze korrekt , aber die Obergrenze bleibt hinter den Erwartungen zurück. Vielleicht solltest du die Frage entsprechend bearbeiten. – ImportanceOfBeingErnest

+0

Entschuldigung, es gab einen Fehler im Ausdruck von r2 im Beispiel. Es wird nun geändert, so dass r2 in [0.5, 1] ​​ist. Der Streamplot ist immer noch falsch. – Azlof

Antwort

0

Von matplotlib.pyplot.streamplot ‚s doc haben beide x, y gleichmäßig beabstandet sind. So können Sie Ihre Daten beispielsweise mit scipys interpolants interpolieren. griddata könnte Ihren Bedürfnissen entsprechen.

[EDIT] Dies wurde in this SO Frage mit Interpolation gelöst.

Verwandte Themen