Tableau: V2021.4
以Tableau提供的【示例-超市】数据为例,将各年度总销售额的柱状图改为环状条形图,也就是跑道图。具体步骤如下:
1 准备数据
使用Tableau进行复杂图形的绘制时,一般都要单独构造数据,构造的数据中内容越丰富,那么后续在画图的时候就相对简单一些。这里构造的数据如下:
- 销售数据表:
- point表:
- 销售数据与point表拼接方式:
2 画图
首先需要先把“订单日期 年”字段从度量转化为维度,并在point字段上创建数据桶,并且将桶大小设为1,具体如下:
然后创建如下计算字段,具体如下:
计算字段 | 公式 |
---|---|
index | INDEX()-1 |
radius | 5-INDEX() |
Angle_pre | WINDOW_SUM(SUM([销售额]),0,0)/WINDOW_MAX(SUM([销售额]))100PI() |
Angle_val | (LOOKUP([Angle_pre],FIRST())/100)*[index] |
X | [radius]*SIN([Angle_val]/180) |
Y | [radius]*COS([Angle_val]/180) |
现在开始正式画图,先将“订单日期 年”拖拽到“详细信息”中、“Point(数据桶)"拖拽到“路径”中、“销售额”拖拽到“详细信息”中,并将“订单日期 年”改为降序排序。结果如下:
之所以先将这三个字段拖拽到工作表中是因为上述创建的计算字段中都涉及到表计算。涉及到表计算的时候,最好都先将相关的字段加入都工作表中,否则表计算的结果会随着工作表中数据字段的增多而发生变化,甚至导致结果跟最初的设想不同。下面依次对各个计算字段计算说明:
**(1) index:**跑道图是由多个圆心重合但半径不同的圆弧组成的,每个圆弧包含多个点,这里固定使用101(点越多画出的圆弧越光滑,该值可以根据自己的需要进行修改)个点来组成每一条环,该字段用来标记圆弧上的每一个点。将“index”拖拽到“详细信息”后,设置其表计算依据如下:
这时通过“分析”->“查看数据”可以查看当前的数据,具体如下图。从图中可以看到,每个年份共产生了101行数据。并且从图中还可以看到,“index"字段与“Point(数据桶)”字段完全相同,而之所以还要单独创建“index"字段是因为数据桶不能进行数值计算。
若是经过这步操作之后得到的结果与上述不同,而“Point(数据桶)”列依然只有0和100两个数字的话,需要将“Point(数据桶)”列的缺失值显示出来。具体方法在桑基图篇中已经讲过,这里不再赘述。
**(2) radius字段:**该字段用于指定圆弧的半径。因为每个圆弧代表一个年份的销售额,这里将2018年对应的圆弧的半径设为1,依次递增到2021年圆弧的半径4。将该字段拖拽到“详细信息”中,并设置其表计算依据如下:
**(3) Angle_pre:**为了体现各个年度销售额的不同,不同的圆弧设置不同的角度。这里默认让销售额最大的年度对应的圆弧的角度为
100
π
100\pi
100π,其他年度按比例缩减。将该字段拖拽到“详细信息”中,设置其计算依据如下:
**(4) Angle_val:**该字段的作用是产生每个圆弧上每一个点对应的角度值。将该计算字段拖拽到“详细信息”中,其表计算依据如下:
其数据结果如下:
**(5) X和Y:**X和Y主要用于生成各个每个圆弧上各个点的X坐标和Y坐标。将“X"拖拽到“列”、“Y”拖拽到“行”中。X和Y的公式中涉及上文多个表计算字段,其计算依据设置如上。然后调整一下“大小”。至此,跑道图就完成了。其效果如下: