11

私はmatplotlibの極座標プロットが本当に好きで、それを使い続けたいと思っています(データポイントはとにかく極座標で与えられ、私の環境は円形であるため)。

ただし、プロットでは、特定の点に指定された半径の円を追加したいと思います。

通常、私は次のようにします:

 ax = plt.subplot(111)
 ax.scatter(data)
 circle = plt.Circle((0,0), 0.5)
 ax.add_artist(circle)
 plt.show()

ただし、極座標では、直角座標を前提としているため、円は使用できません。

私が思いついたアイデアは、一定の半径座標と[0、2PI]の角度座標を持つ点の配列を生成するか、完全に直交座標に切り替えることです。両方の解決策は本当に満足のいくものではありません.matplotlibでもっとうまくできるでしょうか?

ありがとう!

4

1 に答える 1

19

transform次の引数を設定できますCircle

%matplotlib inline
import pylab as pl
import numpy as np

N = 100
theta = np.random.rand(N)*np.pi*2
r = np.cos(theta*2) + np.random.randn(N)*0.1

ax = pl.subplot(111, polar=True)
ax.scatter(theta, r)
circle = pl.Circle((0.5, 0.3), 0.2, transform=ax.transData._b, color="red", alpha=0.4)
ax.add_artist(circle)

出力:

ここに画像の説明を入力

またはtransform=ax.transProjectionAffine + ax.transAxes、プライベート属性を使用したくない場合。

于 2013-11-07T05:40:13.523 に答える