用Tableau画南丁格尔玫瑰图(二)
有了上一篇的基础我们就来真正画一个南丁格尔玫瑰图
我整理了一份数据集(百度网盘),大致就是下面这样。
Tableau引入数据,创建4组,8个计算字段(这里的path用了1-102,相应的X、Y的公式也和第一篇略有差别,效果就是半圆更平滑)
创建计算弧度的两个字段
【Edges】=INDEX()
【Angle】=([Edges]-1)*(2*PI()/WINDOW_MAX([Edges]))
创建计算扇形个数的两个字段
【Count】=INDEX()
【Number of Slices】=WINDOW_MAX([Count])
创建计算半径的字段
【Radius】=SQRT(AVG([Value])/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]*99)))))
【Y】=IIF([Index]=1 OR[Index]=WINDOW_MAX([Index]),0,WINDOW_MAX([Radius])
*SIN([Angle]+((([Index]-2)*WINDOW_MAX(2*PI())/([Number of Slices]*99)))))
首先把【X】、【Y】拖到行列功能区,然后将【Month】和【Cause】拖入标签的颜色和详细信息,选择多边形标记,【path数据桶】拖入路径。
下面是编辑表计算,例如X字段一共是6个表计算(X和Y一样)
【X】和【Index】计算依据选【path数据桶】(跟第一篇的一样)
【Edges】、【Angle】、【Count】表计算依据都选【Month】(也跟第一篇的一样)
只有【Number of Slices】表计算依据特殊,选两个
然后再手动调整一下【month】【Cause】的顺序和颜色,加个边界,大致就是这个样子了
特别要说明的一点是,wiki百科上的原图是这样的,1854年4月份只有灰色,但是实际上数据集里disease和other都是6,所以两个重叠,还有就是11月份没有棕色的,实际上11月份的other是有数据的,就算去调整【Cause】的排序也是没有办法。
原图我调整了一下颜色的透明度,可以略微弥补一下,也可以用【Cause】的突出显示或者筛选之类的工具来做一些交互效果来弥补。(做好的效果)
目前没有找到方法,网上有大神用饼图制作玫瑰图,解决了这个问题,但是实在太复杂,没看明白(public直达)。有兴趣的可以去研究一下
所以就目前这种方法,在应用中要注意的两个问题,以避免遮盖问题
1.保证同一个扇形内,数值都不一样。
2.保证同一个扇形内,各个小扇形的相对比例关系是不变的。