tableau技能

用Tableau画太极阴阳图

2019-08-07  本文已影响60人  扫地sir

前些天被大神拉近了MOM的群,群里高手如云,刚进群就看到有人在讨论如何画太极阴阳图,结果已经有大神画好了,效果绝对令人艳羡。

https://public.tableau.com/profile/redcat#!/vizhome/2_15638890497800/sheet0

一般看到这种惊艳的图表,我就有尝试着自己画的冲动,但是经过研究也只是先把太极阴阳图画出来了,八卦图太难了,等有时间再研究吧(应该跟画圆形热力图的原理相似,只是需要确定各爻的位置)。

其实思路并不难,如果你理解了前面“用Tableau画圆系列”的前三篇文章就具备了基本技巧,如果能理解的透彻一点,就可以灵活的控制圆心和半径,这是画太极图的根本。

另外就是对多边形形成原理的理解,我在研究的时候也有些小困难,其实回想起来还是对多边形的原理有理解不到位的地方,最主要的就是起始点和结束点要一样才能闭合,如果不一样就会出现各种奇怪图形。

下面说一下具体画法,数据集很简单,大家可以去百度网盘下载

链接: https://pan.baidu.com/s/1TIgbMZSoVSRSo4SyYk_HXA 提取码: 6vf2

point代表每一个点,sort用来区分是哪个图形上的点
(一开始我用的是1800个点,每一个角度都用一个点,比如画个半圆就用180个点,但是对性能有些影响,还是听专家的建议,所以就除以4,每4度画一个点,当然也可以再缩小,但是如果太少,会导致圆形不平滑)

然后建立计算字段

if 
//阴鱼右侧半圆
       [sort]="阴鱼" AND [point]<=180 THEN SIN([point]*pi()/180)
//阴鱼左下突出
ELSEif [sort]="阴鱼" AND [point]<=360 THEN SIN([point]*pi()/180)*0.5
//阴鱼右上凹陷
ELSEif [sort]="阴鱼" AND [point]<=540 THEN SIN([point]*pi()/180)*0.5

//阳鱼左侧半圆
ELSEif [sort]="阳鱼" AND [point]<=180 THEN -SIN([point]*pi()/180)
//阳鱼左下凹陷
ELSEif [sort]="阳鱼" AND [point]<=360 THEN SIN([point]*pi()/180)*0.5
//阳鱼右上突出
ELSEif [sort]="阳鱼" AND[point]<=540 THEN SIN([point]*pi()/180)*0.5

//阴眼
ELSEif [sort]="阴眼" THEN SIN([point]*pi()/180)*0.15
//阳眼
ELSEif [sort]="阳眼" THEN SIN([point]*pi()/180)*0.15
END
if 
//阴鱼右侧半圆
       [sort]="阴鱼" AND [point]<=180 THEN COS([point]*pi()/180)
//阴鱼左下突出
ELSEif [sort]="阴鱼" AND [point]<=360 THEN COS([point]*pi()/180)*0.5-0.5
//阴鱼右上凹陷
ELSEif [sort]="阴鱼" AND [point]<=540 THEN -COS([point]*pi()/180)*0.5+0.5

//阳鱼左侧半圆
ELSEif [sort]="阳鱼" AND [point]<=180 THEN COS([point]*pi()/180)
//阳鱼左下凹陷
ELSEif [sort]="阳鱼" AND [point]<=360 THEN COS([point]*pi()/180)*0.5-0.5
//阳鱼右上突出
ELSEif [sort]="阳鱼" AND [point]<=540 THEN -COS([point]*pi()/180)*0.5+0.5

//阴眼
ELSEif [sort]="阴眼" THEN COS([point]*pi()/180)*0.15+0.5

//阳眼
ELSEif [sort]="阳眼" THEN COS([point]*pi()/180)*0.15-0.5

END

整体来说原理并不难,我用下面这个动图演示一下画法,只要认真研究,就能明白

这个是用最开始1800个点的方法做的,便于大家理解,上面X、Y计算字段的基本原理一样,略有不同,可以下载成品的Public研究:https://public.tableau.com/profile/jiangbin#!/vizhome/taijitu/1

另外有一点是要说的,我对于太极图没有研究,阴鱼和阳鱼内部的S形曲线是不是可以用半圆来画?阴眼和阳眼的大小?这些我并不确定,所以这个只是作为探讨技术的途径,未必是真正的太极图画法哦。

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

上一篇 下一篇

猜你喜欢

热点阅读