Data Visualization

Эффективная отрисовка окружностей в Matplotlib

Spread the love

Matplotlib предлагает несколько способов визуализации кругов, каждый со своими преимуществами и недостатками. В этой статье рассматриваются три основных метода, сравниваются их эффективность и пригодность для различных применений.

Оглавление

  1. Использование matplotlib.patches.Circle
  2. Построение по уравнению окружности
  3. Аппроксимация с помощью диаграммы рассеяния

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 обычно рекомендуется из-за его эффективности и ясности. Другие методы предлагают альтернативные визуализации и понимание различных методов построения графиков.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *