Python 用自编函数绘制椭圆
我知道matplotlib中有一个椭圆函数。但我正在尝试学习更多Python,所以我想为ellipse编写一个函数,然后绘制它。原来我做不到。我有这个,但它没有给我一个椭圆:Python 用自编函数绘制椭圆,python,matplotlib,math,Python,Matplotlib,Math,我知道matplotlib中有一个椭圆函数。但我正在尝试学习更多Python,所以我想为ellipse编写一个函数,然后绘制它。原来我做不到。我有这个,但它没有给我一个椭圆: def elipse(x,y): 回报率(x-a)**2/a**2+(y-a)**2/b**2-1 a=5 b=8 x=np.linspace(1100) y=np.linspace(1100) ell=elipse(x,y) plt.绘图(ell) 例如,我想绘制它,给它一个原点和a和b(宽度和高度)。因为您只创建一个
def elipse(x,y):
回报率(x-a)**2/a**2+(y-a)**2/b**2-1
a=5
b=8
x=np.linspace(1100)
y=np.linspace(1100)
ell=elipse(x,y)
plt.绘图(ell)
例如,我想绘制它,给它一个原点和a和b(宽度和高度)。因为您只创建一个隐式方程,所以可以使用Python的符号数学库。默认情况下,将在
-5
和5
之间绘制x
和y
,但您可以更改限制。要仅显示一个绘图,请使用plot_implicit(椭圆(x,y)、(x,-2,10)、(y,-2,10))
。要创建子地块,可以使用show=False
和PlotGrid
:
从sympy.plotting导入绘图\u隐式、绘图网格、绘图
从sympy.abc导入x,y
def椭圆(x,y):
回报率(x-a)**2/a**2+(y-a)**2/b**2-1
a=4
b=3
p1=绘图_隐式(椭圆(x,y),(x,-2,10),(y,-2,10),轴_中心=(0,0),显示=假)
p2=绘图_隐式(椭圆(x,y),(x,-2,20),(y,-1,7),轴_中心=(0,0),显示=假)
绘图网格(1、2、p1、p2)
两个图显示相同的椭圆,最左边的点在0,4
处,最上面的点在4,7
处。如果需要另一个椭圆,可以更改a
和b
的值,或者以其他方式更改方程式
顺便说一下,plot\u implicit
似乎默认在绘图中心绘制x轴,在x=0
绘制y轴。通常,Symphy的绘图也会在y=0处绘制x轴。我不知道这是否只是在当前版本中,但它看起来真的很奇怪,因为x轴在中心。交叉点可明确设置为0,0
,且轴的中心=(0,0)
或者,您可以使用numpy和。创建一个网格,您希望函数返回什么?椭圆应该如何在Python中表示?绘制椭圆。也许可以计算整个椭圆。@mkrieger1看看答案。我是那个意思。我不明白你为什么否决了我的问题,而你却不明白!。图中的-2和10似乎是x和y的范围。但是当我改变它们时,椭圆的位置也会改变,尽管它是相同的椭圆(x,y)。我不明白为什么会这样。椭圆的位置相对于轴上的刻度标签不会改变。仅当轴限制改变时,才会显示绘图的不同部分。如果你在一个互动的环境中,你可以缩放,这也会改变显示的限制。所以给它一个原点和a和b,就没有办法得到一个椭圆?似乎椭圆的位置是任意的,因为给定的x和y仅用于绘图范围,而不是椭圆。好吧,你给出了一个椭圆方程,其中圆心
a,a
,以及a
和b
为半宽半高。如果你想要一个中心xc,yc
和a
和b
为半宽半高的椭圆,你可以使用(x-xc)**2/a**2+(y-yc)**2/b**2-1
。也可以调用plot\u implicit((x-xc)**2/a**2+(y-yc)**2/b**2-1,(x,xc-a,xc+a),(y,yc-b,yc+b))
。