Python Matplotlib-在极坐标图中绘制平滑圆

Python Matplotlib-在极坐标图中绘制平滑圆,python,matplotlib,geometry,polar-coordinates,Python,Matplotlib,Geometry,Polar Coordinates,我非常喜欢matplotlib的极坐标图,并希望继续使用它(因为我的数据点以极坐标给出,我的环境是圆形的) 但是,在绘图中,我想在特定点添加给定半径的圆 通常,我会: ax = plt.subplot(111) ax.scatter(data) circle = plt.Circle((0,0), 0.5) ax.add_artist(circle) plt.show() 然而,在极坐标系中,我不能使用圆,因为它假定为直角坐标 我想到的想法是:在[0,2PI]中生成具有恒定径向坐标和

我非常喜欢matplotlib的极坐标图,并希望继续使用它(因为我的数据点以极坐标给出,我的环境是圆形的)

但是,在绘图中,我想在特定点添加给定半径的圆

通常,我会:

 ax = plt.subplot(111)
 ax.scatter(data)
 circle = plt.Circle((0,0), 0.5)
 ax.add_artist(circle)
 plt.show()
然而,在极坐标系中,我不能使用圆,因为它假定为直角坐标

我想到的想法是:在[0,2PI]中生成具有恒定径向坐标和角度坐标的点阵列,或者完全切换到直角坐标。这两种解决方案都不太令人满意——使用matplotlib可以做得更好吗


谢谢

您可以设置
圆的
变换
参数

%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
如果您不喜欢使用private属性

太好了,谢谢!对于您的解决方案,请注意一点(以防有人无意中发现):圆的原点必须以笛卡尔坐标表示。如果圆的中心以度表示,该怎么办?