Python中同时画一个三维图形和二维图形程序
时间: 2024-03-28 17:07:25 浏览: 101
要在Python中同时绘制一个三维图形和二维图形,可以使用matplotlib库的子图(subplot)功能。以下是一个示例程序,用于在同一个图形中绘制一个二维散点图和一个三维曲面图:
```python
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
# 创建二维图形数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 创建三维图形数据
X = np.linspace(-5, 5, 50)
Y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(X, Y)
Z = np.sin(np.sqrt(X**2 + Y**2))
# 创建子图
fig = plt.figure()
# 创建二维子图
ax1 = fig.add_subplot(121)
ax1.scatter(x, y)
ax1.set_title("2D Scatter Plot")
ax1.set_xlabel("X-axis")
ax1.set_ylabel("Y-axis")
# 创建三维子图
ax2 = fig.add_subplot(122, projection='3d')
ax2.plot_surface(X, Y, Z, cmap='viridis')
ax2.set_title("3D Surface Plot")
ax2.set_xlabel("X-axis")
ax2.set_ylabel("Y-axis")
ax2.set_zlabel("Z-axis")
# 显示图形
plt.show()
```
在这个例子中,我们使用了`fig.add_subplot()`函数创建了一个1行2列的子图布局,然后分别在第一个子图(121)和第二个子图(122)中绘制了二维散点图和三维曲面图。通过`projection='3d'`参数将第二个子图设置为三维投影。
在三维图形部分,我们使用了numpy库生成了一个网格,并计算了每个点的Z值,然后使用`ax2.plot_surface()`函数绘制了三维曲面图。
最后使用`plt.show()`来显示整个图形。你可以根据需要调整子图的位置和样式,以适应你的需求。
阅读全文