目的
数据有 3 个维度时,可以比较方便地表达。例如学生成绩统计中,(学生,科目,成绩)构成的3维数据就可以采用这种方式来做可视化。
效果
- 可以看出各个科目成绩的大致分布情况(图示数据为随机生成)。
代码
版本
- matplotlib 2.2.2
- python 3.7
关键代码
- 可能是
matplotlib
版本有点老,在绘制 3D 图时一定要加这个引用,不然会报错:ValueError: Unknown projection ‘3d’from mpl_toolkits.mplot3d import Axes3D
scatter
函数使用:x 轴、y 轴、z 轴内容数据可以互换,其中一个指定按哪个轴切分,剩余两个确定在切分好的平面上的具体位置。如下代码,按照 y 轴切分,x 和 z 的数据对点进行定位,因此 x 和 z 的长度要相等。ax.scatter(xs=x_data, ys=0, zs=y_data_1, c='#4d3333', s=12, alpha=1, label='English', marker='*')
完整代码
- 整体思路:将 3D 看成多个 2D 平面图的组合。如上图所示,按科目绘制具体情况。
# -*- coding: UTF-8 -*- import random import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D def get_random_data(num): random_data =