Python绘制3D图形的完整攻略
1. 引言
Python是一种直截了当且让人意想不到地灵活的编程语言,而它在技术界的重要地位无人可比。之所以如此受欢迎,其原因之一就是大量可供选择的模块或库包括用于数据可视化的matplotlib模块和3D图形可视化的plotly。
本文将以matplotlib为例,介绍如何使用Python绘制3D图形。
2. 环境安装
首先需要安装如下两个模块:
pip3 install matplotlib
pip3 install mpl_toolkits
3. 绘制3D图形
3.1 加载matplotlib
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
3.2 具体实现(以绘制立体正弦函数为例)
fig = plt.figure() # 创建一个窗口
ax = Axes3D(fig) # 设置3D坐标轴
X = np.arange(-4, 4, 0.25) # X轴
Y = np.arange(-4, 4, 0.25) # Y轴
X, Y = np.meshgrid(X, Y) # 网格坐标的形成
Z = np.sin(np.sqrt(X**2 + Y**2)) # Z轴(立体正弦函数)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow')) # 绘制3D图形
ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap='rainbow') # 在Z=-2的位置处用等高线表示
ax.set_zlim(-2, 2) # Z轴的范围设置
plt.show() # 显示结果
3.3 代码解释:
-
fig
和ax
用于绘制3D图形和设置3D坐标轴。 -
X
、Y
获取网格坐标。 -
Z
代表立体正弦函数中的Z轴的取值。 -
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'))
用于绘制3D图形。参数rstride
和cstride
表示行列的跨度,cmap=plt.get_cmap('rainbow')
用于设置颜色的映射。 -
ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap='rainbow')
在Z=-2的位置处用等高线表示。 -
ax.set_zlim(-2, 2)
表示设置Z轴的范围。 -
plt.show()
显示结果。
4. 示例说明
示例1:绘制3D的谷歌标志
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
#定义坐标
X,Y = np.mgrid[-2:2:20j,-2:2:20j]
Z = 3*X**2+1*Y**2
#创建3D坐标轴
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
#绘制3D图形
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))
#将图形保存为图片
plt.savefig('google.png', dpi=300, bbox_inches='tight')
plt.show() #显示结果
示例2:绘制散点空间图
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
#生成随机数据
x = np.random.randint(low=0, high=100, size=100)
y = np.random.randint(low=0, high=100, size=100)
z = np.random.randint(low=0, high=100, size=100)
#创建3D坐标轴
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
#绘制3D图形
ax.scatter(x, y, z, s=20, c='r', marker='o')
#将图形保存为图片
plt.savefig('scatter.png', dpi=300, bbox_inches='tight')
plt.show() #显示结果
参考文献:
Python 3D作图入门及实战教程
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python绘制3D图形 - Python技术站