'
Код: Выделить всё
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Ellipse
# Données des points (abscisses et ordonnées)
x = [1, 2, 3, 4, 5]
y = [7, 12, 15, 19, 25]
# Calculer les moyennes des abscisses et ordonnées
centre_x = np.mean(x)
centre_y = np.mean(y)
# Calculer les écarts entre chaque point et le centre
dx = np.abs(x - centre_x)
dy = np.abs(y - centre_y)
# Trouver les valeurs maximales des écarts
max_dx = np.max(dx)
max_dy = np.max(dy)
# Utiliser ces valeurs pour définir la largeur et la hauteur de l'ellipse
largeur = 2 * max_dx
hauteur = 2 * max_dy
# Calculer l'angle idéal (en radians)
angle_rad = np.arctan2(max_dy, max_dx)
# Convertir l'angle en degrés
angle_deg = np.degrees(angle_rad)
# Créer l'ellipse
ellipse = Ellipse((centre_x, centre_y), largeur, hauteur, angle=angle_deg, fill=False, color='red')
# Créer un nuage de points avec des couleurs aléatoires pour chaque point
plt.scatter(x, y, c=np.random.rand(len(x), 3))
# Ajouter l'ellipse au graphique
plt.gca().add_patch(ellipse)
# Afficher le graphique
plt.show()
У меня есть размер эллипса, но я не нашел подходящего угла.
Подробнее здесь: https://stackoverflow.com/questions/786 ... ing-points