热图有时候叫热区图或者热力图,都是用于表现某种事物密集度的图形化显示。
我写的这个没有画底图,不然会更好趣,比如一个键盘,一张房屋平面图,或者一张Google地图,拿它做什么用,完全取决于你的需要。
二、原理
1、首先可以参考下面几个链接
[heatmap.js 一个用canvas画热力图的利器] http://www.cnblogs.com/bdqlaccp/archive/2012/09/12/2681518.html
[浅谈Heatmap] http://huoding.com/2011/01/04/39
[pyHeatMap : 使用Python绘制热图的库] http://oldj.net/article/python-heat-map/
2、基本原理:
A、创建一个跟图片大小或者网页或者窗口一样大小的二维数组(可用一维实现),例如图片分辨率为1024x768,则你的二维数组为768行,1024列,数据所有元素均初始化为0。
B、准备两张同样大小的画布(在Qt下可用QImage,在JavaScript下可用canvas,在Python下可用PIL库的Image),一张用于绘制灰度渐变圆圈(假设为 Alpha_Canvas),一张用于着色后显示输出(Output_Canvas)。
C、准备一个调色板,调色板从0到255填充上线性渐变的颜色,这个颜色可根据需要自由指定,调色板主要用于着色操作中取颜色。
D、我们假设在画布上点击一下算是采一个点,则点击一下对应的数组元素的值增加1,用于标识该位置(又)被点击了一次。
E、我们保存一个整个数组中单个位置被点击次数最多的值(假设为:max),比如在整个画布中,(10,10)这个位置被点击了20次,而其他所有点均在该点的点击次数之下,则20被存储到该变量(max)中。这就意味着每点击一次都要拿当前坐标点的点击次数和最大点击次数相比,如果最大点击次数小于当前点击次数,则更新最大点击次数,并重新绘制整个图。
F、选择Alpha_Canvas画布,在被点击的地方绘制一个径向渐变的圆,圆心为被点击的坐标,半径可根据需要自由设置,径向渐变圆的是灰度渐变圆圈,整个径向渐变圆圈是一个黑色圆圈,但圆心的颜色要比边界的深,而圆心的Alpha通道值是该点的被点击次数(假设为:current_count)与被点击次数最多的值之比乘以255(255要根据你的绘图环境来确定,在Qt中255表示完全不透明,0表示完全透明),即公式:current_count/max*255。
G、选择Output_Canva画布,进行着色操作,根据上一步的圆心和半径可确定一个矩形区域,如果是重绘操作,则该矩形区域为整个图形区域。对该矩形区域进行遍历,取出Alpha_Canvas画布上每个颜色点的Alpha通道值,根据此值从调色板上取出对应的颜色,R、G、B三个值用从调色板取来的值,但Alpha通道值不能相同,在这里可以设置一个阈值,用于决定渐变开始的半径,也可以自由修改。将这四个值决定的颜色点绘制到Output_Canvas画布上,依此操作,直至遍历结束。
H、完成着色操作后,整个绘图过程就完毕了。
3、开源项目
JavaScript 版本:[heatmap.js] http://www.patrick-wied.at/static/heatmapjs/index.html
Python 版本:[pyHeatMap] https://github.com/oldj/pyheatmap

heatmap(热图)相关推荐

  1. R语言绘制heatmap热图

    From:http://bbsunchen.iteye.com/blog/1271580 介绍如何使用 R 绘制 heatmap 的文章. 今天无意间在Flowingdata看到一篇关于如何使用 R ...

  2. 在线画图工具-heatmap热图

    网址: http://www.qplot.cn:3838/sample-apps/002-heatmap.2/ 热图(heatmap),使用颜色的深浅,或颜色的变化来反应数据值的大小. 使用说明:与v ...

  3. 基于HTML5实现3D热图Heatmap应用

    Heatmap热图通过众多数据点信息,汇聚成直观可视化颜色效果,热图已广泛被应用于气象预报.医疗成像.机房温度监控等行业,甚至应用于竞技体育领域的数据分析. http://www.hightopo.c ...

  4. html如何绘制热图,R使用笔记: heatmap.2绘制热图

    笔记内容: 热图的应用意义 包的安装 scale的作用 作图细节:系统发生树,label, color key的问题等 补充:添加多行ColSideColors 补充:heatmap.3示例 补充:C ...

  5. R 数据可视化 : 热图

    本文作者蒋刘一琦,自嘲是一个有艺术追求的生信狗,毕业于浙江大学生物信息学专业,目前在复旦大学就读研究生,研究方向为宏基因组. 在生物信息领域我们常常使用 R 语言对数据可视化.在对数据可视化的时候,我 ...

  6. 宏基因组扩增子3统计绘图:中文首发,最详系,零基础(箱线图、散点图、热图、曼哈顿图、火山图、韦恩图、三元图、网络图)

    本网内容首发"宏基因组"公众号,更佳阅读体验.更多相关文章,欢迎点我跳转至公众号阅读 注:文为蓝色字均为文章链接,可点击直达 写在前面 优秀的作品都有三部分曲,如骇客帝国.教父.指 ...

  7. 扩增子统计绘图3热图:样品相关分析,差异OTU

    写在前面 优秀的作品都有三部分曲,如骇客帝国.教父.指环王等. 扩增子系列课程也分为三部曲: 第一部<扩增子图表解读>:加速大家对同行文章的解读能力. 第二部<扩增子分析解读> ...

  8. seaborn线性关系数据可视化:时间线图|热图|结构化图表可视化

    一.线性关系数据可视化lmplot( ) 表示对所统计的数据做散点图,并拟合一个一元线性回归关系. lmplot(x, y, data, hue=None, col=None, row=None, p ...

  9. R语言可视化分别使用lattice包和ggplot2包可视化热图(heatmap)并绘制热力图对应的系统树图(dendrogram)实战

    R语言可视化分别使用lattice包和ggplot2包可视化热图(heatmap)并绘制热力图对应的系统树图(dendrogram)实战 目录

最新文章

  1. 数据揭秘清华研究生日常!47%单身,50.7%从未打过游戏...
  2. python与数据思维基础目录_python入门知识思维路线图及环境配置
  3. Mac的移动硬盘不能装载该如何解决?
  4. python 实现队列功能 queue insert() pop()
  5. CSDN专訪:大数据时代下的商业存储
  6. python中 r是什么意思_python中rb含义理解
  7. python多线程框架_基于python和bash的多线程任务框架 不要让cpu闲着了
  8. this--学习笔记
  9. Javascript(二)——函数(重载、回调)与作用域(附图解)
  10. python 文件及文件夹操作
  11. LeetCode(171)——Excel表列序号(JavaScript)
  12. Unity基础-图形渲染
  13. greensock下载_GreenSock动画平台初学者指南
  14. Mac 原生词典扩展词库
  15. swiper+vue3,使用自动切换autoplay+自定义分页器navigation的报错问题解决
  16. 常喝酸奶,远离糖尿病
  17. android 11 antutu AID64 等检测软件电池容量不匹配
  18. 显卡的各种故障维修方法
  19. android 第三方相册,相册选择图片
  20. mac下sourcetree设置代理

热门文章

  1. 【BZOJ2456】mode,卡内存
  2. 【codevs1228】苹果树,哦
  3. 【NOIP2011TG】【OJ4366】【codevs1135】选择客栈
  4. in、at和on作为方位介词_21
  5. 2017.10.1 atcoder TK1 D 思考记录
  6. 2017.5.10 华容道 失败总结
  7. 什么叫内部银团_MOS管和IGBT管有什么区别?
  8. CSM中一些常见问题的解决方式
  9. c语言中const的作用面试,C语言const关键字作用
  10. 加密和解码(不同加密方法:随机数,hash,出现次数)