`fig.add_subplot(projection='3d')` 和 `gca(projection='3d')` 都可以创建一个 3D 坐标系的 Axes 对象,但是它们的使用方式略有不同。
`fig.add_subplot(projection='3d')` 是在 Figure 对象上添加一个新的子图,并返回该子图对应的 Axes 对象。这种方式适用于需要在同一张图中绘制多个子图的情况,例如:
```python
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(121, projection='3d')
ax2 = fig.add_subplot(122, projection='3d')
# 在 ax1 和 ax2 中分别绘制 3D 图形
```
`gca(projection='3d')` 则是获取当前图形中的 Axes 对象,并将其转换为 3D 坐标系。如果当前图形中没有 Axes 对象,则会自动创建一个。这种方式适用于只需要在当前图形中绘制一个 3D 图形的情况,例如:
```python
import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.gca(projection='3d')
# 在 ax 中绘制 3D 图形
```
总的来说,`fig.add_subplot(projection='3d')` 更加灵活,可以在同一张图中绘制多个子图,而 `gca(projection='3d')` 更加简洁,适用于只需要绘制一个 3D 图形的情况。