2017-12-08 5 views
0

私は、matplotlibを使って極座標で流線をプロットしようとしています。しかし、いくつかの問題は、極プロットの範囲に現れるようです。ここでは、問題を説明するために1つの短い例です: r=r1(linspace)で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() 

、問題はありません。しかし、r=r2の場合、プロットの半径範囲は間違っており、[0.5、1.]ではなく[0.5、0.82]で変化します。

私のコードで何が問題になっていますか? matplotlib.pyplot.streamplotdocから

+1

蒸気線が '[3.16、6.8]'と '[10 ** 0.5、10 ** 1] = [3.16,10]'の間ではなく、下限が正しいという問題があると思いますしかし、上限は期待に満たない。それに応じて質問を編集する必要があります。 – ImportanceOfBeingErnest

+0

申し訳ありませんが、この例ではr2の表現に間違いがありました。 r2が[0.5、1]になるように変更されました。ストリームプロットはまだ間違っています。 – Azlof

答えて

0

は、両方x, yが等間隔されなければなりません。たとえば、scipyのinterpolantsを使用してデータを補間できます。 griddataがあなたのニーズに合っているかもしれません。

[編集]これは内挿を伴うthisのSOの問題で解決されました。

関連する問題