Matplotlib – рисунок гладкого круга в полярном сюжете

Мне очень нравится полярный сюжет matplotlib и я бы с удовольствием продолжал работать с ним (так как мои данные указываются в полярных координатах, и моя окружность круглая).

Однако в сюжете я хотел бы добавить круги заданных радиусов в определенных точках.

Обычно я бы сделал:

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

Однако в полярных координатах я не могу использовать круг, так как он принимает прямоугольные координаты.

Идеи, которые я придумал: создать массив точек с постоянной радиальной координатой и угловой координатой в [0, 2PI] или полностью переключиться на прямоугольные координаты. Оба решения на самом деле не являются удовлетворительными – можно ли сделать что-нибудь лучше с matplotlib?

Благодаря!

    Вы можете установить аргумент 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 если вам не нравится использовать частный атрибут.