使用Numpy进行高程统计及可视化
Posted 虾神说D
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Numpy进行高程统计及可视化相关的知识,希望对你有一定的参考价值。
先看一个灰常流弊的视频:
看完之后,虾神想,这不就是hadoop里面的基本功wordcount么……不过不用hadoop,也不用Spark,用Numpy怎么来做呢?说做就做,下面先看看效果:
虽然功能灰常容易实现,但是架不住人家的效果流弊啊,所以就有了以下的对话:
一句话直接点题……百万后期,要饭码农……太真实了。
下面简单说说整个功能实现的基本原理:
首先,如果不上色的话,就是个最最简单的高程频数统计,如果你喜欢用字典来做的话,也是灰常容易的,比如这么写:
这里的除以10取整之后再乘以10,是用来做重分类的,把十位和个位都舍掉:比如4530,就舍入成4500。
不过这样一算居然用了5.54s……不就是一个双重循环么,这么慢,有方法快点不咯?答案当然木问题的,比如直接用numpy的内置函数:
卧槽!84毫秒……用numpy的速度,居然是Python循环计算的65倍……果断不要自己写统计流程了,果然Python用包才是王道。
numpy的unique函数,可以直接进行唯一值统计,统计完成之后,就可以直接绘制出柱状图了:
实际上到这里为止,高程统计就算打完收工了……
颜色!颜色哪里去了?不说颜色,算个毛的打完收工啊!!
好吧,下面继续……设置颜色的matplotlib的一个基本功,直接通过cmap进行颜色映射,就可以直接进行渲染,比如对地形,我们通过不同的颜色来映射一下:
gist_earth,所谓的地球色:
或则直接用灰度色:
matplotlib的标志色jet(冷热色):
cmap的原理就是直接生成一个线性分级色彩构建器:好吧这个名字是我自己瞎取的,官方名字叫做“LinearSegmentedColormap ”,作用就是根据你设定的颜色名称,生成一系列颜色值。所以我们可以直接从这个构建器里面,去获取到我们需要的颜色:
下面我从jet里面,获取10个颜色:
这是rgb+透明度组成的值,当然,我们也可以准换为十六进制的标准颜色编号:
当然,也是可以用渐变色:
知道这些方法,就自然可以获取不同的高程的渲染色,然后得到柱状图了,所有的源码如下:
如果需要源代码的,可以去虾神新的代码仓库找。
代码参考地址,直接公众号发送6,即可获得,以上代码和数据,都在PythonDemo/021高程统计及可视化里面。
以上是关于使用Numpy进行高程统计及可视化的主要内容,如果未能解决你的问题,请参考以下文章