Вы должны добавить его к осям. A Circle
является подклассом класса an Artist
, и метод axes
имеет add_artist
метод.
Вот пример этого:
import matplotlib.pyplot as plt
circle1 = plt.Circle((0, 0), 0.2, color='r')
circle2 = plt.Circle((0.5, 0.5), 0.2, color='blue')
circle3 = plt.Circle((1, 1), 0.2, color='g', clip_on=False)
fig, ax = plt.subplots() # note we must use plt.subplots, not plt.subplot
# (or if you have an existing figure)
# fig = plt.gcf()
# ax = fig.gca()
ax.add_artist(circle1)
ax.add_artist(circle2)
ax.add_artist(circle3)
fig.savefig('plotcircles.png')
Это приводит к следующему рисунку:
Первый круг находится в начале координат, но по умолчанию clip_on
это True
так, поэтому круг обрезается, когда он выходит за пределы axes
. Третий (зеленый) круг показывает, что происходит, когда вы не обрезаете Artist
. Он простирается за пределы осей (но не за пределы фигуры, т. Е. Размер фигуры не регулируется автоматически для построения графика всех ваших художников).
Единицы для x, y и радиуса соответствуют единицам данных по умолчанию. В этом случае я ничего не рисовал на своих осях ( fig.gca()
возвращает текущие оси), и, так как ограничения никогда не устанавливались, по умолчанию они находятся в диапазоне от x до y от 0 до 1.
Вот продолжение примера, показывающее, как важны единицы измерения:
circle1 = plt.Circle((0, 0), 2, color='r')
# now make a circle with no fill, which is good for hi-lighting key results
circle2 = plt.Circle((5, 5), 0.5, color='b', fill=False)
circle3 = plt.Circle((10, 10), 2, color='g', clip_on=False)
ax = plt.gca()
ax.cla() # clear things for fresh plot
# change default range so that new circles will work
ax.set_xlim((0, 10))
ax.set_ylim((0, 10))
# some data
ax.plot(range(11), 'o', color='black')
# key data point that we are encircling
ax.plot((5), (5), 'o', color='y')
ax.add_artist(circle1)
ax.add_artist(circle2)
ax.add_artist(circle3)
fig.savefig('plotcircles2.png')
что приводит к:
Вы можете видеть, как я установил заливку 2-го круга False
, что полезно для обобщения ключевых результатов (например, моей желтой точки данных).