Matplotlib предлагает несколько способов визуализации кругов, каждый со своими преимуществами и недостатками. В этой статье рассматриваются три основных метода, сравниваются их эффективность и пригодность для различных применений.
Оглавление
- Использование
matplotlib.patches.Circle
- Построение по уравнению окружности
- Аппроксимация с помощью диаграммы рассеяния
1. Использование matplotlib.patches.Circle
Это самый простой и обычно предпочтительный метод. Класс matplotlib.patches.Circle
создает объект круга, который можно напрямую добавить на график. Он эффективен и создает чистую векторную графику.
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
fig, ax = plt.subplots()
center_x, center_y = 0, 0
radius = 2
circle = Circle((center_x, center_y), radius, facecolor='skyblue', edgecolor='black', linewidth=2)
ax.add_patch(circle)
ax.set_xlim([-3, 3])
ax.set_ylim([-3, 3])
ax.set_aspect('equal') # Обеспечивает круговую форму круга
plt.title('Круг с помощью matplotlib.patches.Circle')
plt.show()
2. Построение по уравнению окружности
Окружность можно определить по её уравнению: (x — h)² + (y — k)² = r², где (h, k) — центр, а r — радиус. Мы можем сгенерировать координаты x и y, удовлетворяющие этому уравнению, и построить их.
import matplotlib.pyplot as plt
import numpy as np
h, k = 0, 0
r = 2
theta = np.linspace(0, 2 * np.pi, 200) # Больше точек для более гладкого круга
x = h + r * np.cos(theta)
y = k + r * np.sin(theta)
plt.plot(x, y)
plt.xlabel("x")
plt.ylabel("y")
plt.title('Круг по уравнению')
plt.gca().set_aspect('equal')
plt.show()
3. Аппроксимация с помощью диаграммы рассеяния
Диаграмма рассеяния может приблизить окружность, отображая множество случайно сгенерированных точек внутри радиуса окружности. Этот метод менее эффективен и менее точен, чем два предыдущих, но он демонстрирует другой подход.
import matplotlib.pyplot as plt
import numpy as np
center_x, center_y = 0, 0
radius = 2
num_points = 500
angles = np.random.uniform(0, 2 * np.pi, num_points)
radii = np.random.uniform(0, radius, num_points)
x = center_x + radii * np.cos(angles)
y = center_y + radii * np.sin(angles)
plt.scatter(x, y, s=5) # Регулировка 's' для размера точки
plt.xlabel("x")
plt.ylabel("y")
plt.title('Аппроксимация круга с помощью диаграммы рассеяния')
plt.gca().set_aspect('equal')
plt.show()
Метод matplotlib.patches.Circle
обычно рекомендуется из-за его эффективности и ясности. Другие методы предлагают альтернативные визуализации и понимание различных методов построения графиков.