Matplotlib 绘制 3D 图像主要通过 mplot3d 模块实现,但由于三维图像实际上是在二维画布上展示,因此同样需要载入 pyplot 模块。
mplot3d 模块下主要包含 4 个大类,分别是:
* mpl_toolkits.mplot3d.axes3d():包含各种实现绘图的类和方法
* mpl_toolkits.mplot3d.axis3d():包含坐标轴相关的类和方法
* mpl_toolkits.mplot3d.art3d():包含2D转换并用于3D绘制的类和方法
* mpl_toolkits.mplot3d.proj3d():其他的一些方法,如计算三维向量长度等
一般情况下我们用到最多的是 axes3d() 中的axes3d.Axes3D() 类,Axes3D() 类下面存在散点图、线形图、柱状图、曲线图等各种制图方式。
采用matplotlib生成散点图
首先,导入必须的模块
# 导入pandas、pyplot、Axes3D模块
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
第二步,数据处理
# 用pandas模块读取Excel文件,并分别生成X轴(lng,经度)、Y轴(lat,纬度)、Z轴(sj,时间)
data = pd.read_excel('D:/pythondata/test.xlsx')
lng = pd.DataFrame(data,columns = ['经度'])
lat = pd.DataFrame(data,columns = ['纬度'])
sj = pd.DataFrame(data,columns = ['时间'])
第三步:绘图
# 生成画布、3D图形对象、三维散点图
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(lng,lat,time)
# 设置坐标轴显示以及旋转角度
ax.set_xlabel('lng')
ax.set_ylabel('lat')
ax.set_zlabel('time')
ax.view_init(elev=10,azim=235)
plt.show()