来来来!学matplotlib之3D图
最近一直在忙大创的事情,很久都没有写文章了,抱歉哈!今天我们来聊聊matplotlib中的3D图。既然3D图都摆上桌面了,那么就意味着其它类型的图(比如雷达图、热力图等等)我就不会在matplotlib这个系列介绍了,我打算把它们放到seaborn和pyecharts系列来介绍。因为都是可视化专题,我不可能把所有类型的图都在每一个单元介绍一遍,这样是没有意义的。那好,言归正传,接下来和我一起来学习3D图吧。
散点图
每介绍一个专题,我都会从最简单的着手,我个人认为在3D图中,散点图是最简单的,下面给出代码示例和结果。
![](https://img.haomeiwen.com/i12048719/8d8d71d33472638f.jpg)
代码很简单,我就不做过多的介绍了,只给大家一个温馨提示,如果想要放大或旋转图片,可以将%matplotlib inline改为%matplotlib notebook。
折线图
下面利用折线图来画一个弹簧
![](https://img.haomeiwen.com/i12048719/d13cafb4c1347fc1.jpg)
绘制弹簧最核心的思路就是利用了公式
曲面图
在3D绘图中,曲面图可以说是一种非常常用的图片类型,下面来看一个简单的例子。
![](https://img.haomeiwen.com/i12048719/444eba5e64fcb113.jpg)
可以看到,曲面其实就是由这两条曲线围成的一个区域。
下面和大家一起来画一个球。
![](https://img.haomeiwen.com/i12048719/f9a8db897d7efa62.jpg)
采用笛卡尔坐标来绘制球体是比较困难的,在这里我们采用的是球坐标,用到的最关键的数学公式是
至于公式是怎样推出来的,这个我想难不倒聪明的蛇友,实在不明白的话就上网查找吧,在这里我就不做过多的解释了。还有一个问题是,不知道大家明不明白np.outer的用法?如果不明白就看看下面的例子吧。
![](https://img.haomeiwen.com/i12048719/9873ef518ec37156.jpg)
线框图
线框图可以说是曲面图的一个简化版,我们还是采用球体的数据来绘制线框图。
![](https://img.haomeiwen.com/i12048719/3e32bb55b7f5d77b.jpg)
柱形图
柱形图的参数和上面两种图的参数不一样,它除了需要x,y,z的坐标之外,还需要我们提供dx,dy,dz参数,简单地说就是长宽高。
![](https://img.haomeiwen.com/i12048719/ed4176c52a87bec8.jpg)
体素图
其实我也不太清楚这种图的名称,暂且就叫做体素图吧。
体素图相对来说还是比较难以理解的,先给大家看一个简单的例子吧。
![](https://img.haomeiwen.com/i12048719/23bef8cfd9c8d17f.jpg)
voxels的参数必须是三维的数组,True表示有体素,False表示没有。数组中的一维部分的元素个数对应的是层数,二维部分的元素个数对应沿着y轴方向的排数,三维部分的元素个数对应沿着x轴方向的排数。
有了上面的知识之后,我们就可以来骚一波了。一时兴起,我就画了个长城。
![](https://img.haomeiwen.com/i12048719/b29368699ee99d38.jpg)
我知道画得不像,大家就权当看着玩好了。
好吧,今天就先跟大家聊到这,下期我们不见不散!
![](https://img.haomeiwen.com/i12048719/f8e20769a5c17df2.jpg)