用Tableau画南丁格尔玫瑰图(一)

一直想研究南丁格尔玫瑰图,但是好长一段时间都不得法门,写完用Tableau画环形图系列后,虽然能画出来但是不知道原理,这两天再来研究玫瑰图,就发现霍然开朗,学习嘛,应该张弛有度,放下一段时间可能就顿悟了。

现在列出参考的几篇文章

1.https://downforthecountblog.com/2018/11/12/how-to-coxcomb-charts-in-tableau/(这篇文章是从prep处理数据,到Tableau画图,全部用动画形式,很直观)

2.https://www.thedataschool.co.uk/gwilym-lockwood/coxcomb-charts-alteryx-tableau-one-stop-blog-shop/(这篇文章讲了画玫瑰图的数学原理)

3.https://www.jianshu.com/p/b17747c8145b(阿达这篇文章着重方法,原理很少)

首先应该说一下,与画圆环图不同,玫瑰图的画法是利用多边形功能,画扇形,但是基本原理还是三角函数,建议先学会以前的画圆系列再看这篇原理的文章,会更加明白。

玫瑰图一般就是两种,只有一级科目或者含有二级科目。方法都一样,我们采用最简单的只有一级科目的数据。为了是数据更好理解,我们只画3个扇形。

只有一级科目
含有两级科目

那么现在构造数据,改造数据只需要三个字段,类别,数值和path。类别也可是时间,但一般都为维度,数值随便填,path是为了构造数据桶(阿达的文章里用的是1-102,为了能画的不那么圆,大家看的更直观我选1-13)

数据集

Tableau引入数据,path转换成维度,创建数据桶

创建计算弧度的两个字段

【Edges】=INDEX()

【Angle】=([Edges]-1)*(2*PI()/WINDOW_MAX([Edges]))

创建计算扇形个数的两个字段

【Count】=INDEX()

【Number of Slices】=WINDOW_MAX([Count])

创建计算半径的字段

【Radius】=SQRT(AVG([数值])/PI())

创建X、Y相关字段

【Index】=INDEX()

【X】=IIF([Index]=1 OR[Index]=WINDOW_MAX([Index]),0,WINDOW_MAX([Radius])

*COS([Angle]+((([Index]-2)*WINDOW_MAX(2*PI())/([Number of Slices]*10)))))

【Y】=IIF([Index]=1 OR[Index]=WINDOW_MAX([Index]),0,WINDOW_MAX([Radius])

*SIN([Angle]+((([Index]-2)*WINDOW_MAX(2*PI())/([Number of Slices]*10)))))

好了,一共是4组,8个计算字段

开始创建玫瑰图

首先把【X】、【Y】拖到行列功能区(谁放行、列都可以),然后将【类别】拖入标签的颜色和详细信息,选择多边形标记,【path数据桶】拖入路径。

最麻烦的是编辑表计算,例如X字段一共是6个表计算,上面两个【X】和【Index】计算依据选【path数据桶】,后面四个【Edges】、【Angle】、【Count】、【Number of Slices】表计算依据都选【类别】。Y字段是一样的。

这样我们就得到了基本的玫瑰图,大家注意到了,不是很圆,这就是【path】设置少的效果


下面就来讲一下原理吧。

首先画扇形的基础是画圆,画圆的基础就是三角函数,这个大家可以参考《用Tableau画环形图系列(一)画个简单的圆》里面X坐标=a + sin(2*PI / 360*角度) * r ;Y坐标=b + cos(2*PI / 360*角度) * r,这里都是同心圆,所以X= sin(2*PI / 360*角度) * r ,Y= cos(2*PI / 360*角度) * r

先说这里的r,也就是【Radius】=SQRT(AVG([数值])/PI()),圆的面积就是S=πr²,要求r就用下面的推导公式,也就是说我们用数值的大小来反求出来半径的长度,数值大的,半径就大,数值小的半径小,例子里面就是扇形2的数值最大,扇形1的数值最小。

推导公式

我们摘出来【X】的一部分(【Y】同理)

WINDOW_MAX([Radius])*COS([Angle]+((([Index]-2)*WINDOW_MAX(2*PI())/([Number of Slices]*10))))

其中WINDOW_MAX([Radius])就是半径

其中cos([Angle])这部分是确定了扇形的起始角度,【Edges】=INDEX()按照【类别】计算值是1-3,扇形1=1,扇形2=2,扇形3=3,【Angle】=([Edges]-1)*(2*PI()/WINDOW_MAX([Edges]))就是2*PI / 360*角度的变形,只有([Edges]-1)/WINDOW_MAX([Edges])决定了扇形的起始角度,比如扇形1起始是0度,扇形2起始是120度,扇形3起始是240度

有了起始点的位置,剩下就是每个点的位置了,这个是由这段表计算决定的((([Index]-2)*WINDOW_MAX(2*PI())/([Number of Slices]*10))),和上面的一样其实([Index]-2)/([Number of Slices]*10这段决定了每个点相对起始点的位置,就例子的图形来说,每个扇形都被等分成了10份,每份之间是12度,画点2时相对起始点增加了0度,画点3的时候相对起始点,增加了12度,以此类推。(如果path是1-102,就乘以99,都是path的最大值减3,第三篇阿达的参考文章里就是99)

而【IIF([Index]=1 OR[Index]=WINDOW_MAX([Index]),0】就是说,点1和点13时,都划到圆心,这就形成了一个封闭的扇形。其他两个扇形也是一样的。


基本上原理就讲解完了。

含有二级科目的图放到下一篇

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容