Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.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_Plot - Fatal编程技术网

Python 如何绘制二次曲线?

Python 如何绘制二次曲线?,python,matplotlib,plot,Python,Matplotlib,Plot,假设我有一个如下函数: a*x^2 + b*y^2 + c*x + d*y + e = 0 如何绘制由该方程定义的曲线?例如,对于x^2+y^2-1=0,我希望绘制一个圆 我找不到绘制这种方程的函数。可以绘制的方程通常是关于x的多项式函数形式: y = a*x^n + .... 另一个问题的答案是: import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D x = n

假设我有一个如下函数:

a*x^2 + b*y^2 + c*x + d*y + e = 0
如何绘制由该方程定义的曲线?例如,对于
x^2+y^2-1=0
,我希望绘制一个圆

我找不到绘制这种方程的函数。可以绘制的方程通常是关于
x
的多项式函数形式:

y = a*x^n + ....
另一个问题的答案是:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

x = np.arange(-5, 5, 0.25)
y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(x, y)
F = 3 + 2*X + 4*X*Y + 5*X*X

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, F)
plt.show()
它是三维的二维曲面,而我需要二维的曲线。

您需要的是对应于0值的二维曲面的标高集。您应该使用
pyplot.contour
来减轻工作中的困难部分。您只需要定义感兴趣的范围和网格上的函数。修改问题中的示例代码:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
F = 5*X**2 - 4*X*Y + 2*Y**2 + 3*X - 4*Y - 1

fig,ax = plt.subplots()
ax.contour(X, Y, F, levels=[0]) # take level set corresponding to 0
plt.show()


网格越细,轮廓线越平滑。

您在使用哪个绘图库时遇到问题?你能出示你的密码吗?@timgeb我包括了被视为重复的问题的答案。但它们适用于多项式函数,但不适用于类似于我的函数。你的代码块绘制了一个
z(x,y)
曲面,一个二维对象。您的方程是
f(x,y)=0
,它为曲线提供了一个隐式方程,即嵌入在1d中的1d对象。特别是,您有锥形截面。你在问题中提到“表面”。请澄清术语,以明确您想要的内容。@Ahmad
f(x,y)=x+y
有两个变量,可以绘制为二维曲面
f(x,y)=x+y=0
是定义此函数水平集的方程,它是由
(x,y)
平面中的
y=-x
给出的1d曲线。你的案子也是这样。您想将
f(x,y)
绘制为曲面,还是希望
f(x,y)=0
曲线?@AndrasDeak将后者
f(x,y)=0
绘制为二维平面(x vs y)。非常感谢:)。