Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用自编函数绘制椭圆_Python_Matplotlib_Math - Fatal编程技术网

Python 用自编函数绘制椭圆

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(宽度和高度)。因为您只创建一个

我知道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(宽度和高度)。

因为您只创建一个隐式方程,所以可以使用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))