八、 3D 绘图

  1. 3D绘图与2D绘图的调用方法几乎相同,除了增加一个 projection='3d'的关键字参数。

    1. import matplotlib.pyplot as plt
    2. from mpl_toolkits.mplot3d import Axes3D
    3. fig=plt.figure()
    4. ax=fig.add_addsubplot(111,projection='3d') # 旧式写法
    5. ax=Axes3D(fig) #新式写法

    3d_new_style

  2. 绘制直线:Axes3D.plot(xs, ys, *args, **kwargs)。其参数为:

    • xs,ys:点的 x,y坐标
    • zs:点的z坐标。该值可以是一个标量(表示对所有点都取同一个值);也可以是个数组或列表,表示每个点一个值
    • zdir:指定那个是z轴。其值可以是'x'或者'y'或者'z'
    • 剩下的关键字参数与Axes.plot()相同
  3. 绘制散点图:Axes3D.scatter(xs, ys, zs=0, zdir=’z’, s=20, c=’b’, depthshade=True, *args, **kwargs)。其参数为:

    • xs,ys:点的 x,y坐标
    • zs:点的z坐标。该值可以是一个标量(表示对所有点都取同一个值);也可以是个数组或列表,表示每个点一个值
    • zdir:指定那个是z轴。其值可以是'x'或者'y'或者'z'
    • s:散点的大小(单位为 point^2).该值可以是一个标量(表示对所有点都取同一个值);也可以是个数组或列表,表示每个点一个值
    • c:散点的颜色。你可以将它设为一个颜色字符串,表示所有的点都是一个颜色。或者是个 cmap,指定颜色图
    • depthshade:一个布尔值。如果为True,则通过对marker设置阴影来展示层次关系
    • 剩下的关键字参数与Axes.scatter()相同
  4. 绘制线框:Axes3D.plot_wireframe(X, Y, Z, *args, **kwargs)。其参数为:

    • X,Y:点的 x,y坐标
    • Z:点的z坐标。该值可以是一个标量(表示对所有点都取同一个值);也可以是个数组或列表,表示每个点一个值
    • rstride:行的步长
    • cstride:列的步长
    • 剩下的关键字传递给LineCollection