Чтобы создать фигуру с N прямоугольниками, разделите круг равномерно на N частей, то есть на углы 2pi/N
. X и y - это синус и косинус последующих углов, умноженных на радиус внутреннего круга.
Сами прямоугольники необходимо повернуть на средний угол сегмента. И на -90 градусов больше, чтобы иметь ширину, перпендикулярную радиусу.
Обратите внимание, что синус и косинус действуют на углы в радианах, тогда как вращение прямоугольников выражается в градусах.
Поскольку патчи не устанавливайте автоматически пределы графика, они должны быть установлены явно.
Вот код, с которого можно начать:
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
width = 6
height = 4
num_rect = 12
r = width / 2 / np.sin(np.pi / num_rect)
for i in range(num_rect):
theta = 2 * np.pi * (i + 0.5) / num_rect
x = r * np.cos(theta)
y = r * np.sin(theta)
rectangle = plt.Rectangle((x, y), width, height, angle=360 * i / num_rect - 90,
edgecolor='dodgerblue', facecolor=plt.cm.rainbow(i / num_rect), alpha=.5)
ax.add_patch(rectangle)
d = (r + height) * 1.1
ax.set_xlim(-d, d)
ax.set_ylim(-d, d)
ax.set_aspect('equal')
plt.show()
![resulting plot](https://i.stack.imgur.com/vcafb.png)