Saltar al contenido

Trazar elipse con matplotlib.pyplot (Python)

Solución:

La demostración de matplotlib ellipse es agradable. Pero no pude implementarlo en mi código sin un bucle for. Estaba obteniendo un error de figura de ejes. Esto es lo que hice en su lugar, donde, por supuesto, el centro xy son mis propias coordenadas con el ancho y alto respectivos según la imagen sobre la que tracé la elipse.

from matplotlib.patches import Ellipse

plt.figure()
ax = plt.gca()

ellipse = Ellipse(xy=(157.18, 68.4705), width=0.036, height=0.012, 
                        edgecolor="r", fc="None", lw=2)
ax.add_patch(ellipse)

Este código se basa parcialmente en el primer cuadro de código de esta página. Consulte la respuesta de Chris más arriba para obtener un enlace a matplotlib.patches.Ellipse.

Si no desea utilizar un parche, puede utilizar la ecuación paramétrica de una elipse:

x = u + a cos

import numpy as np
from matplotlib import pyplot as plt
from math import pi

u=1.     #x-position of the center
v=0.5    #y-position of the center
a=2.     #radius on the x-axis
b=1.5    #radius on the y-axis

t = np.linspace(0, 2*pi, 100)
plt.plot( u+a*np.cos
plt.grid(color="lightgray",linestyle="--")
plt.show()

Lo que da:
elipse orientada a x con ecuación paramétrica

La elipse se puede rotar gracias a una matriz de rotación 2D:

import numpy as np
from matplotlib import pyplot as plt
from math import pi, cos, sin

u=1.       #x-position of the center
v=0.5      #y-position of the center
a=2.       #radius on the x-axis
b=1.5      #radius on the y-axis
t_rot=pi/4 #rotation angle

t = np.linspace(0, 2*pi, 100)
Ell = np.array([a*np.cos
     #u,v removed to keep the same center location
R_rot = np.array([[cos(t_rot) , -sin(t_rot)],[sin(t_rot) , cos(t_rot)]])  
     #2-D rotation matrix

Ell_rot = np.zeros((2,Ell.shape[1]))
for i in range(Ell.shape[1]):
    Ell_rot[:,i] = np.dot(R_rot,Ell[:,i])

plt.plot( u+Ell[0,:] , v+Ell[1,:] )     #initial ellipse
plt.plot( u+Ell_rot[0,:] , v+Ell_rot[1,:],'darkorange' )    #rotated ellipse
plt.grid(color="lightgray",linestyle="--")
plt.show()

Devoluciones:
elipse rotada con ecuación paramétrica

¿Has visto la demostración de matplotlib ellipse? Aquí usan matplotlib.patches.Ellipse.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *