3

(512, 768) のようなサイズの 2D numpy 配列にシミュレートされたデータがあります。

このデータは、rmin = 1 から rmax = 100 まで、および phi は 0 から 2pi までシミュレートされます。

これを極座標プロットにプロットしようとしましたが、半径方向のオフセットがないと、これは本当に奇妙に見えます。注: 画像は放射状の密度分布から得られているため、プロットは放射状に対称である必要があります。

xlim/ylim が設定されていない場合:

fig = plt.figure()
ax = fig.add_subplot(111, projection='polar')

rho = // 2D numpy array

ax.pcolormesh(rho)
fig.show()

オフセットと xlim/ylim のないラジアル プロット

xlim/ylim セットの場合:

fig = plt.figure()
ax = fig.add_subplot(111, projection='polar')

rho = // 2D numpy array
print rho.shape

ax.axis([x_scale[0], x_scale[-1], y_scale[0], y_scale[-1]])

ax.pcolormesh(rho)
fig.show()

オフセットなしの放射状プロット

手動軸 + X/Y 値を使用。

fig = plt.figure()
ax = fig.add_subplot(111, projection='polar')

rho = // 2D numpy array
print rho.shape

ax.axis([x_scale[0], x_scale[-1], 0, y_scale[-1]])
y_scale_with_offset = np.insert(y_scale, 0, 0)

ax.pcolormesh(x_scale, y_scale_with_offset, rho)

ax.pcolormesh(rho)

ここに画像の説明を入力

1 からラジアル オフセットを追加するトリックはありますか?

4

1 に答える 1

1

極座標プロットで使用できると思いますax.set_rmin()。負の値は、探している効果をもたらします。

fig = plt.figure()
ax = fig.add_subplot(111, projection='polar')

c = np.ones((50,50)) + np.arange(50).reshape(50,1)

aP = ax.pcolormesh(c)
plt.colorbar(aP)
ax.set_rmin(-10.0)
plt.show()

ここに画像の説明を入力

スケールを含める価値があるので、プロットからデータを削除するだけではないことがわかります(これは意図したものではないと思います)。

余談ですが、[ipython ノートブック] をまだチェックしていない場合は、入力後にタブを押すax.とすべてのリストがポップアップ表示されるため、問題の解決策を見つけることができた可能性があります。使用できるオブジェクト。matplotlib は適切にラベル付けされてset_rminいるため、かなり明白な選択です。

于 2013-09-19T15:16:46.870 に答える