gpt4 book ai didi

python - 使用 matplotlib.pyplot (Python) 绘制椭圆

转载 作者:太空狗 更新时间:2023-10-29 17:23:55 24 4
gpt4 key购买 nike

抱歉,如果这是一个愚蠢的问题,但是有没有一种简单的方法可以在 Python 中使用 matplotlib.pyplot 绘制椭圆?我希望有类似于 matplotlib.pyplot.arrow 的东西,但我找不到任何东西。

使用 matplotlib.patchesdraw_artist 或类似的东西是唯一的方法吗?我希望有一个更简单的方法,但文档并没有提供太多帮助。

最佳答案

如果不想使用面片,可以使用椭圆的参数方程:

x = u + cos(t) ; y = v + b sin(t)

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(t) , v+b*np.sin(t) )
plt.grid(color='lightgray',linestyle='--')
plt.show()

给出: x-oriented ellipse with parametric equation

由于二维旋转矩阵,椭圆可以旋转:

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(t) , b*np.sin(t)])
#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()

返回: rotated ellipse with parametric equation

关于python - 使用 matplotlib.pyplot (Python) 绘制椭圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10952060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com