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对象。特别是,您有锥形截面。你在问题中提到“表面”。请澄清术语,以明确您想要的内容。@Ahmadf(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)。非常感谢:)。