使用 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 渲染器。
如何使用 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 渲染器。