使用Numpy进行高程统计及可视化

先看一个灰常流弊的视频:

看完之后,虾神想,这不就是hadoop里面的基本功wordcount么……不过不用hadoop,也不用Spark,用Numpy怎么来做呢?说做就做,下面先看看效果:

使用Numpy进行高程统计及可视化

虽然功能灰常容易实现,但是架不住人家的效果流弊啊,所以就有了以下的对话:

使用Numpy进行高程统计及可视化

一句话直接点题……百万后期,要饭码农……太真实了。

下面简单说说整个功能实现的基本原理:

首先,如果不上色的话,就是个最最简单的高程频数统计,如果你喜欢用字典来做的话,也是灰常容易的,比如这么写:

使用Numpy进行高程统计及可视化

这里的除以10取整之后再乘以10,是用来做重分类的,把十位和个位都舍掉:比如4530,就舍入成4500。

不过这样一算居然用了5.54s……不就是一个双重循环么,这么慢,有方法快点不咯?答案当然木问题的,比如直接用numpy的内置函数:

使用Numpy进行高程统计及可视化

卧槽!84毫秒……用numpy的速度,居然是Python循环计算的65倍……果断不要自己写统计流程了,果然Python用包才是王道。

numpy的unique函数,可以直接进行唯一值统计,统计完成之后,就可以直接绘制出柱状图了:

使用Numpy进行高程统计及可视化

实际上到这里为止,高程统计就算打完收工了……

使用Numpy进行高程统计及可视化

颜色!颜色哪里去了?不说颜色,算个毛的打完收工啊!!

好吧,下面继续……设置颜色的matplotlib的一个基本功,直接通过cmap进行颜色映射,就可以直接进行渲染,比如对地形,我们通过不同的颜色来映射一下:

gist_earth,所谓的地球色:

使用Numpy进行高程统计及可视化

或则直接用灰度色:

使用Numpy进行高程统计及可视化

matplotlib的标志色jet(冷热色):

使用Numpy进行高程统计及可视化

cmap的原理就是直接生成一个线性分级色彩构建器:好吧这个名字是我自己瞎取的,官方名字叫做“LinearSegmentedColormap ”,作用就是根据你设定的颜色名称,生成一系列颜色值。所以我们可以直接从这个构建器里面,去获取到我们需要的颜色:

下面我从jet里面,获取10个颜色:

使用Numpy进行高程统计及可视化

这是rgb+透明度组成的值,当然,我们也可以准换为十六进制的标准颜色编号:

使用Numpy进行高程统计及可视化

当然,也是可以用渐变色:

使用Numpy进行高程统计及可视化

知道这些方法,就自然可以获取不同的高程的渲染色,然后得到柱状图了,所有的源码如下:

使用Numpy进行高程统计及可视化

如果需要源代码的,可以去虾神新的代码仓库找。

代码参考地址,直接公众号发送6,即可获得,以上代码和数据,都在PythonDemo/021高程统计及可视化里面。