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