使用
sympy,您只需要执行以下操作:
from sympy import plot_implicit, Eq
from sympy.abc import x, y
plot_implicit (Eq(3*x**2+2*x*y+4*y**2, 5))
请注意,Python中幂函数需要使用
**
,因为
^
被保留用于
按位异或。表达式可以写成
3*x**2+2*x*y+4*y**2 - 5
或使用等式运算符
Eq(3*x**2+2*x*y+4*y**2, 5)
。
plot_implicit
的额外参数可以设置x和y的范围,例如
plot_implicit (3*x**2+2*x*y+4*y**2 - 5, (x, -2, 2), (y, -2, 2))
。
另外,要得到更加华丽的效果,matplotlib的imshow
可以绘制一个由z值着色的完整的x,y区域。选择一个发散型色图,椭圆将显示在由发散型归一化指示的中心z值处。
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.colors as mcolors
xmin, xmax = -2, 2
ymin, ymax = -2, 2
x, y = np.meshgrid(np.linspace(xmin, xmax, 500), np.linspace(ymin, ymax, 500))
z = 3*x**2+2*x*y+4*y**2
divnorm = mcolors.DivergingNorm(vmin=z.min(), vcenter=5, vmax=z.max())
plt.imshow(z, interpolation='bilinear', norm=divnorm, cmap='seismic', origin='lower', extent=[xmin, xmax, ymin, ymax])
plt.colorbar()
plt.show()
![example plot](https://istack.dev59.com/OqkGR.webp)