导入模块
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
设置3D坐标系:
fig = plt.figure()
ax = Axes3D(fig)
1.3D曲面
plot_suface函数 绘制曲面
ax.plot_surface(x,y,z,rstride,cstride,cmap)
x,y,z: 三维数据
rstride: 数组行距(指定行跨度)
cstride: 数组行距(指定列跨度)
cmap: 颜色映射
fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(-2,2,0.1)
Y = np.arange(-2,2,0.1)
X,Y = np.meshgrid(X,Y)
def f(x,y):
return(1-y**5+x**5)*np.exp(-x**2-y**2)
surface = ax.plot_surface(X,Y,f(X,Y), rstride=1, cstride=1, cmap=plt.cm.jet)
fig.colorbar(surface)
ax.view_init(elev=30,azim=125) # 设置视角(elev为视角高度,azim为曲面旋转角度)
plt.show()
2.3D散点图
scatter(x,y,z,color,marker)
x,y,z: 三维数据
color: 颜色
marker: 标记样式
x = np.random.randint(30,40,100)
y = np.random.randint(20,30,100)
z = np.random.randint(10,20,100)
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(x,y,z,c='r',marker='*')
ax.set_xlabel('x Label')
ax.set_ylabel('y Label')
ax.set_zlabel('z Label')
plt.show()
3.3D条形柱状图
bar(x,y,z,zdir,color)
x = np.arange(8)
y1 = [1,3,9,3,6,2,3,6]
y2 = [2,5,3,1,7,9,3,6]
y3 = [1,2,3,4,5,6,7,8]
color = ['r','c','b','brown','C1','C2',"y",'m']
fig = plt.figure()
ax = Axes3D(fig)
ax.bar(x,y1,1,zdir='y',color=color)
ax.bar(x,y2,2,zdir='y',color=color)
ax.bar(x,y3,3,zdir='y',color=color)
ax.set_xlabel('x Label')
ax.set_ylabel('y Label')
ax.set_zlabel('z Label')
ax.view_init(elev=40) #设置视角
plt.show()
参考:
法比奥·内利. Python数据分析实战:第2版.北京:人民邮电出版社, 2019.11.