自己乱填的数据做出来较乱,且有部分内容暂时理不清,所以分析一下原作者绘制的桑基图,附上原作链接https://www.jianshu.com/p/73d53eff9e6e
准备阶段
涉及的基本函数:
ATTR(expression)
如果它的所有行都有一个值,则返回该表达式的值。否则返回星号。会忽略 Null 值。
SUM(expression)
返回表达式中所有值的总计。SUM 只能用于数字字段。会忽略 Null 值。
RUNNING_SUM(expression)
返回给定表达式从分区中第一行到当前行的运行总计。
TOTAL(expression)
返回表计算分区内表达式的总计。
以及表计算中的寻址与分区:
TuSwap - Tableau 表计算 | 寻址方式的区别(分享自知乎网)https://zhuanlan.zhihu.com/p/24915109?utm_source=qq&utm_medium=social
寻址(定向) 分区(划定范围)
寻址用于确定计算移动的方向
分区字段会将视图拆分成多个子视图(或子表),然后将表计算应用于每个此类分区内的标记。
在表计算的特定维度中,√为寻址,口为分区,表示沿着【寻址】对于每个【分区】
分析及绘制阶段
在桑基图的制作中,涉及两部分数据,一是原始基本数据,增加一列LINK ;二是辅助列表,1.t值的范围[-6,6],步长0.25,总计49行,2.path列,[0-98]步长为1; 3.Min or Max,[min,max]用于与原始主数据关联
下图为还原图涉及的维度与度量数据,原图主要展示了某一年的母亲年龄所对应的婴儿出生体重的流向,主要涉及维度为Group Step-1 Group Step-2,涉及度量为母亲年龄对应的不同年代的出生数
计算字段罗列:
Size A: sum([出生数])/total(SUM([出生数]))
Position1 :
Max Position 1 RUNNING_SUM([SizeA])
Min Position 1 RUNNING_SUM([SizeA])-[Size A]
Position2:
Max Position 2 RUNNING_SUM([SizeA])
Min Position 2 RUNNING_SUM([SizeA])-[Size A]
Sigmoid: 1/(1+EXP(1)^-[t])
Curve Max:[MaxPosition 1]+(([Max Position 2]-[Max Position 1])*ATTR([Sigmoid]))
Curve Min:[MinPosition 1]+(([Min Position 2]-[Min Position 1])*ATTR([Sigmoid]))
Polygon Curves A:
CASE ATTR([Min or Max])
WHEN 'Min' THEN [Curve Min]
WHEN 'Max' THEN [Curve Max]
END
对于size A的表计算,group step-1
group step-2为寻址,min or max 与t 为分区
(在min or max 与t 详细数据点交叉构成的区域中针对group step-1 group step-2所对应的出生数进行计算),
total(SUM([出生数]))类似于数据为6与max, 6 min, 5.75 max ,5.75 min…的子区块数据总计,
(例如母亲年龄<25岁的婴儿出生体重在2500-2999在6与max的范围中的出生数)
分区与寻址逻辑理解中
如此sizeA便可将相关数据线划为整体且可作为位置确定的基础数据
因size A为总计数据且为使对应数据范围有相应的厚度,所以在位置确定中分为MAX position以及MIN position,以确定厚度的最上点与最下点
所以标记选多边形
还原过程中未得到曲线而是直线,不知是哪步的问题= =