使用 Matplotlib 如何绘制代数方程

Using Matplotlib how to plot algebraic equations

如何使用 Matplotlib 在 3d 中绘制以下代数方程? 想可视化 3 个平面的交点。

x - y + 2z =  5

    y -  z = -1

         z =  3

方程式需要以封闭形式出现才能用 matplotlib 绘制。这对于问题中的那些方程式来说相对容易。
然后可以使用二维网格根据方程计算缺失维度的值。现在,有了所有 3 个维度的值,我们可以使用 plot_surface 来绘制平面。

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


z1 = lambda x,y: 5./2.-x/2.+y/2.    # x - y + 2z =  5
z2 = lambda x,y: y+1                #     y -  z = -1
z3 = lambda x,y: 3.*np.ones_like(x) #          z =  3

x = np.arange(-3,3)
X,Y = np.meshgrid(x,x)


fig = plt.figure()
ax = fig.gca(projection='3d')
ax.set_xlabel("x"); ax.set_ylabel("y"); ax.set_zlabel("z")


surf = ax.plot_surface(X, Y, z1(X,Y), color="C1", linewidth=0, shade=False)
surf = ax.plot_surface(X, Y, z2(X,Y), color="C2", linewidth=0, shade=False)
surf = ax.plot_surface(X, Y, z3(X,Y), color="C3", linewidth=0, shade=False)


plt.show()

平面似乎没有相交,这是因为 matplotlib 不是真正的 3D 渲染器。