圆形热力图(Circular Heat Map),也叫径向热力图(Radial heat map)。

在Tableau画圆形热力图是一种很炫酷,但未必实用的方案,最近看到Public上的一个Viz《Visualizing the Global Peace Gap》,就是一个少有的好例子。

我特别喜欢这Viz,就有拆解、复制的冲动,经过努力,算是大致了解了圆形热力图的制作方法,现在跟大家分享一下。由于Viz的数据太多,太复杂,我还是选择一份比较好理解的数据为大家讲解原理。个人感觉,圆形热力图的制作原理和Sunburst Diagram很像,关于Sunburst Diagram的制作原理,日后我会另开文章介绍。

我选择了广州市2015年全年的空气质量数据,具体数据大家可以到这个网站爬取 http://www.tianqihoubao.com/aqi/,成品如下图:

数据很简单,两个表格,表1是空气质量,表2做内连接构造笛卡尔积。具体原理,还需参考前面的用Tableau画圆系列文章了解画圆的基本原理。

打开tableau,引入两个表格,做内连接

创建一个参数[max_sort]

这个参数用来控制开口的大小,每月最多是31天,如果设置成31,就是一个完整的圆,大于31就有开口了。

[month]=MONTH([date])

[day]=DAY([date])

[month]提取出月份,以便计算圆的半径,1月在最内环,12月在最外环

[day]提取出天数,不同的天数就决定了不同的角度

[R]=

if [path]=1 or [path]=4 or [path]=5 then [month] else [month]+1 end

[angle]

360/[max_sort]

*

if [path]=3 or [path]=4 then

[max_sort]-[day] else [max_sort]-[day]+1

end

[X]=

COS([angle]*PI()/180)*[R]

[Y]=

SIN([angle]*PI()/180)*[R]

这里就要解释一下,其实每一天都是画一个方形,方形要闭合就必需有5个点,点1和点5是重合的,我们要做的就是找到5个点的X、Y坐标点。

X、Y的坐标计算原理,前面的画圆系列已经说过了,这里只说一下R和angle的计算思路。

以下图1月1日为例,先说半径R,点1、4、5都是靠内侧的点,半径为R1也就是1,点2、3是靠外侧的点,所以半径就是R1+1也就是2,以此类推,如果是2月1日,点1、4、5(和1月1日的点2、3重合)半径是2,点2、3半径就是3

再说angle,[max_sort]决定了圆环被分割的份数,360/[max_sort]就决定了每份所占的角度,点3、4需要和点1、2错开360/[max_sort]个角度(其实1月1日点3、4的位置和1月2日点1、2的位置是重合的),至于是顺时针错开,还是逆时针错开取决于是[max_sort]-[day]还是[day]-[max_sort]。

大致思路就是这样的。

然后[X]拖到列功能区,[Y]拖到行功能区

标记选择多边形,[date]拖到详细信息,[path]拖到路径,[rank]拖到颜色,在做相应的美化就可以了。

大家可以根据自己的需求,去构造对应的数据集,主要是确定好半径和角度,最开始的例子里由于数据集比较大,比较复杂,所以构造半径和角度时候就显得不是特别清晰,需要有耐心去一一拆解,这也是学习必经的一个过程。

此篇文章已发布到我的公众号:saodisir,有兴趣也可关注一下

matlab绘制圆形热力图,用Tableau画圆形热力图相关推荐

  1. 用Tableau画圆形网络关系图

    创建数据集 数据集就是随机生成的,[index start]和[index end]就是[start]和[end]中,各字母的放在一起的总排序值,排序决定了每个点在圆环中的位置,这个可以参考上面和弦图 ...

  2. 嘘!我有特殊的绕线画技巧,教你用MATLAB绘制另一种绕线画

    实际上该方法是将之前图片三角化的代码进行了一部分改写,能够适用于色块明显,背景色较浅的图像绕线(三角网格)风格生成(这说的不就几乎是卡通形象嘛). 效果图: 图片三角化代码传送门 MATLAB 图片三 ...

  3. 用Matlab绘制正方形圆形椭圆

    利用Matlab绘制正方形.圆形.椭圆形,并填充颜色. 1 绘制正方形 2 绘制圆形 3 绘制椭圆形 绘制正方形 a = 2; % 正方形边长 x = [a/2, -a/2, -a/2, a/2]; ...

  4. 【Scratch】青少年蓝桥杯_每日一题_9.09_画圆形渐变螺旋

    用心写好每一篇文章 效果图 一.题目背景 本题是Scratch编程问题,出现在第十届蓝桥杯国赛赛中. 二.编程实现 绘制一个颜色变化的圆形螺旋﹐画螺旋与画圆形的方法类似.提示∶ 1.画圆形的方法:前进 ...

  5. Android_AsyncTaskDemo之QQ记步数(画圆形图片知识)

    今天学习了AsyncTask Android 的异步机制.我简单的实现我的一个小小案例--qq记步数.然后穿插一个画圆形图片的知识点. 由于所学知识有限,目前我计数,还有排名等等我就简单的利用随机数实 ...

  6. 用matlab绘制P三曲线,知道曲线方程 怎么用matlab绘制三维图 一定要给出程序 , matlab怎样画三维曲线...

    导航:网站首页 > 知道曲线方程 怎么用matlab绘制三维图 一定要给出程序 , matlab怎样画三维曲线 知道曲线方程 怎么用matlab绘制三维图 一定要给出程序 , matlab怎样画 ...

  7. matlab怎么利用圆形度提取园,基于Matlab+GUI图像处理的物料粒度与圆形度测试.pdf...

    基于Matlab+GUI图像处理的物料粒度与圆形度测试.pdf 第36卷第2期 中国农机化学报 Vol_36No.2 2015年3月 JournalofChinese Mechanization Ma ...

  8. 学用circle画圆形。

    学用circle画圆形. 1.程序分析: 2.程序源代码: /*circle*/ #include "graphics.h" main() {int driver,mode,i; ...

  9. C语言编程之用circle画圆形

    问题描述:学用circle画圆形. 程序源码: #include<graphics.h> void main() {int driver,mode,i; float j=1,k=1; dr ...

最新文章

  1. 学习笔记--Spark
  2. vue引入postcss-plugin-px2rem,px转rem
  3. mysql判断表存在的sql语句_SQL 语句判断已知表是否存在_MySQL
  4. echarts地图在ie浏览器上不显示
  5. linux运维、架构之路-Zabbix监控
  6. 惊!MySQL官网巨变,下载被取消
  7. python爬虫项目描述怎么写_爬虫项目咋写,爬取什么样的数据可以作为项目写在简历上?...
  8. css 浮动 相对定位 绝对定位区别
  9. perl DBI高级编程
  10. windows server2003的邮箱服务器安装详细步骤
  11. android向DDR读写数据,解决刷机回安卓时提示:Romcode/初始化DDR/读取初始化结果/USB...的问题...
  12. python斐波那契数列计算_python计算斐波那契数列
  13. 方框加对勾怎么输入_Word怎么输入对号和方框对勾
  14. OneTab Plus|标签管理大师
  15. 陆小曼给徐志摩的挽联
  16. JFFS2文件系统挂载过程(5)
  17. 如何让自己像打游戏一样发了疯、拼了命、石乐志的学习或者工作?
  18. 十个你可能不知道的CloudFlare免费CDN加速技巧
  19. 设计模式-优惠券-策略模式
  20. 代理方式部署NER标注平台doccano

热门文章

  1. 测试拳击速度软件,有没有专门看拳击的app?推荐一款不错的拳击app
  2. win10+大恒相机驱动软件的问题
  3. 2008中国软件外包研发竞争力十强企业
  4. html---br换行符
  5. 大津法优化之在飞卡智能车中的应用
  6. 全球领先另类资产管理公司: 黑石集团(Blackstone Group)
  7. 解决kswapd0 CPU占用率高的问题
  8. 收藏|建筑专业都有什么证书?
  9. C# •MouseDown •MouseDown •MouseUp 的先后顺序
  10. Dcat Admin框架JS颜色中,Dcat.color.darken()其实是调用Dcat.color.lighten()