使用Python绘制点击图、热图
via: http://blog.csdn.net/wenyusuran/article
pyHeatMap是一个使用Python生成热图的库,基本代码是我一年多之前写的,最近把它从项目中抠出来做成一个独立的库并开源。(https://github.com/oldj/pyheatmap)
可以直接下载源码安装最新的版本,也可以通过pip或easy_install安装稳定的发布版:
12345 |
pip install pyheatmap # 或者 easy_install pyheatmap |
---|
pyHeatMap依赖于PIL库,使用之前需要先确保你的环境中已经安装了PIL。使用方法很简单,比如:
# -*-coding:utf-8-*-
import urllibfrom pyheatmap.heatmap
import HeatMap
def main():
data = [] # download test data url="https://raw.github.com/oldj/pyheatmap/master/examples/test_data.txt" sdata = urllib.urlopen(url).read().split("n")
data = []
for ln in sdata:
a = ln.split(",")
if len(a) != 2:
continue a = [int(i)
for i in a]
data.append(a)
hm = HeatMap(data)
hm.clickmap(save_as="d://python/hit.png")
hm.heatmap(save_as="d://python/heat.png")
if __name__ == "__main__":
main()
输入的数据为形如 [[123, 234], [429, 82], [220, 535], …] 这样的列表或元组,可以把它理解为一组平面坐标。
目前这个库可以生成两种图片:点击图、热图。
点击图效果如下:
热图效果如下:
绘制图片时,还可以指定一个底图,这个底图可以是任意图像,也可以是另一个点击图。比如:
12345678910 |
defexample2(): data_1=loadDataFromFile("test_data.txt") data_2=loadDataFromFile("test_data2.txt") hm=HeatMap(data_1) hit_img=hm.clickmap() hm2=HeatMap(data_2) hit_img2=hm2.clickmap(base=hit_img,color=(0,0,255,255)) hit_img2.save("hit2.png") |
---|
生成的图片形如:
关于绘制热图中用到的方法,可以参考我以前的文章,比如
关于网页点击热区图、
http://oldj.net/article/page-heat-map/
关于热区图的色盘
http://oldj.net/article/heat-map-colors/
其中热图绘制中还用到了
Bresenham画圆算法
http://oldj.net/article/bresenham-algorithm/
- RelativeLayout(相对布局)
- TableLayout(表格布局)
- 【MindiaX实例】 PHP 在foreach 中获取JSON 单个数据
- 史上十大最严重黑客袭击事件盘点
- LinearLayout(线性布局)
- 服务化了,没想到耦合更加严重?
- 利用好注册的域名
- Android中TextView
- 腾讯 DCI 上线基于集中控制的 SR-TE 方案
- 如何从VS2003升级到VS2008
- js中多个Date对象变量间赋值互相影响
- 并发编程之Executor,Executors,ExecutorService和ThreadPoolExecutor
- 【DeveMobile实例】d3.js 与Trianglify 制作SVG格式Low-Poly 特效
- 未来人工智能将把人类分为3层,而你会在哪一层呢?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 基因表达聚类分析之初探SOM - 自组织特征图
- JMH - Java 代码性能测试的终极利器、必须掌握
- 从零搭建Spring Boot脚手架(6):整合Redis作为缓存
- 换一种姿势挖掘CORS漏洞
- 新的Spring OAuth2.0 授权服务器项目正式发布
- spring boot整合apollo
- 枚举和List的几个共有方法
- AtomicInteger源码解析
- AtomicIntegerArray源码解析
- AtomicIntegerFieldUpdater源码解析
- “终于懂了” 系列:Android屏幕刷新机制—VSync、Choreographer 全面理解!
- 一些PHP选项参数相关的函数
- 【Flutter 专题】98 易忽略的【小而巧】的技术点汇总 (六)
- PHP脚本设置及获取进程名
- GlasgowSmile-v2通关笔记