使用Matplotlib,我如何在3d中绘制以下代数方程? 想要想象三面的交叉点。
x - y + 2z = 5
y - z = -1
z = 3
答案 0 :(得分:2)
需要将方程式以闭合形式引入,以便用matplotlib绘制。对于问题中的那些方程,这是相对容易的
然后可以使用2维的网格网格根据方程计算缺失维度的值。现在,拥有所有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渲染器。