import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 生成三维坐标数据
x = np.linspace(-1, 1, 100)
y = np.linspace(-1, 1, 100)
X, Y = np.meshgrid(x, y)
Z = X**2 + Y**2
# 创建figure
fig = plt.figure(figsize=(8, 8))
# 绘制三维坐标图
ax1 = fig.add_subplot(221, projection='3d')
ax1.plot_surface(X, Y, Z)
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
ax1.set_zlabel('Z')
# 设定三维视角
ax1.view_init(30, 45)
# 设定轴标签和轴限制
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
ax1.set_zlabel('Z')
ax1.set_xlim(-1, 1)
ax1.set_ylim(-1, 1)
ax1.set_zlim(0, 2)
# 绘制三个侧视图
ax2 = fig.add_subplot(222)
ax2.contour(X, Y, Z)
ax2.set_xlabel('X')
ax2.set_ylabel('Y')
ax2.set_title('XY Plane')
ax3 = fig.add_subplot(223)
ax3.contour(Y, Z, X)
ax3.set_xlabel('Y')
ax3.set_ylabel('Z')
ax3.set_title('YZ Plane')
ax4 = fig.add_subplot(224)
ax4.contour(X, Z, Y)
ax4.set_xlabel('X')
ax4.set_ylabel('Z')
ax4.set_title('XZ Plane')
plt.show()
这段代码演示了如何使用Matplotlib和mplot3d模块生成一个三维坐标图和三个侧视图。以下是代码的解释:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
该代码导入了NumPy模块(用于生成坐标数据),Matplotlib模块(用于绘制图形)和mplot3d模块(用于绘制三维坐标图)。
x = np.linspace(-1, 1, 100)
y = np.linspace(-1, 1, 100)
X, Y = np.meshgrid(x, y)
Z = X**2 + Y**2
该代码生成了一个100x100的网格,代表了在x和y范围内的所有可能的坐标值。然后,我们使用这些坐标值计算每个点的z值,这里我们是计算每个点的z值等于该点的x和y的平方和。
fig = plt.figure(figsize=(8, 8))
该代码创建了一个名为fig的figure,并将其大小设置为8x8英寸。
ax1 = fig.add_subplot(221, projection='3d')
ax1.plot_surface(X, Y, Z)
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
ax1.set_zlabel('Z')
该代码使用add_subplot方法在figure中创建一个名为ax1的子图,并将其类型设置为三维坐标图。然后,我们使用plot_surface方法绘制三维坐标图,并使用set_xlabel、set_ylabel和set_zlabel方法设置轴标签。
ax1.view_init(30, 45)
该代码使用view_init方法设置三维视角,这里我们将视角设置为30度的俯角和45度的方位角。
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
ax1.set_zlabel('Z')
ax1.set_xlim(-1, 1)
ax1.set_ylim(-1, 1)
ax1.set_zlim(0, 2)
该代码使用set_xlabel、set_ylabel和set_zlabel方法设置轴标签,并使用set_xlim、set_ylim和set_zlim方法设置轴限制。
ax2 = fig.add_subplot(222)
ax2.contour(X, Y, Z)
ax2.set_xlabel('X')
ax2.set_ylabel('Y')
ax2.set_title('XY Plane')
ax3 = fig.add_subplot(223)
ax3.contour(Y, Z, X)
ax3.set_xlabel('Y')
ax3.set_ylabel('Z')
ax3.set_title('YZ Plane')
ax4 = fig.add_subplot(224)
ax4.contour(X, Z, Y)
ax4.set_xlabel('X')
ax4.set_ylabel('Z')
ax4.set_title('XZ Plane')
该代码使用add_subplot方法在figure中创建三个名为ax2、ax3和ax4的子图,并使用contour方法绘制三个侧视图(XY平面、YZ平面和XZ平面)。然后,我们使用set_xlabel、set_ylabel和set_title方法设置轴标签和子图标题。
plt.show()
该代码使用show方法显示所有图形。