我真的很喜欢matplotlib的极地图,并愿意继续使用它(因为我的数据点是以极坐标给出的,而且我的环境是圆形的)。
然而,在图中,我想在特定点添加给定半径的圆。
通常,我会这样做:
ax = plt.subplot(111)
ax.scatter(data)
circle = plt.Circle((0,0), 0.5)
ax.add_artist(circle)
plt.show()但是,在极坐标中,我不能使用circle,因为它假定是直角坐标。
我想出的想法是:生成一个具有固定径向坐标和0,2PI角坐标的点数组,或者完全切换到直角坐标。这两种解决方案都不是很令人满意-使用matplotlib还能做得更好吗?
谢谢!
发布于 2013-11-07 13:40:14
您可以设置Circle的transform参数
%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)输出:

如果不喜欢使用private属性,则使用transform=ax.transProjectionAffine + ax.transAxes。
https://stackoverflow.com/questions/19827792
复制相似问题