本文来自Tableau 大神Toan Hoang Double, Spaced Doughnut Chart Tutorial - Toan Hoang,看上去很好看,学习一下。
Data
参见原文,这里Path 用来增加计算点,Position 表示两层甜甜圈的内外半径。
创建计算字段
在Tableau中导入数据集后添加计算字段。
Path (Bin)
大神的例子里Size of bins写的是1,可是我看后面的公式,用2也可以完成这个表,不知道大神的用意是什么。
Zero
0
Index
INDEX()
Seat Share
MAX(IF([Type]="Percentage of Seats") THEN [Values] END)
Vote Share
MAX(IF([Type]="Percentage of Votes") THEN [Values] END)
TC_Position
WINDOW_MAX(MAX([Position]))
TC_Values
WINDOW_MAX(MAX([Values]))
X
关于X和Y的设置,Toan解释说要把百分比转换为弧度,通过Color的定义我们知道百分比的定义是Index*2/360,但是我理解Index的值是1~360,不明白为什么这里要乘以2,难道是为了精度更高?
X, Y的公式通过TC_Position来表示不同的半径
SIN([Index]*2*PI()/180)*[TC_Position]
Note: We need to convert percentages to Radians by multiplying by PI() and then dividing by 180.
Y
COS([Index]*2*PI()/180)*[TC_Position]
Color
这里定义很巧妙,如果圆上的百分比大于实际的value,那么就显示为灰色。
IF [Index]*2/360 <= [TC_Values] THEN WINDOW_MAX(MAX([Party])) ELSE "Gray" END
工作表
接下来整合这些计算字段来完成图表。
-> 把Type拖到Detail Mark
-> 把Path (Bin) 拖入列
->> 右击Path (Bin),确认Show Missing Values 前面打勾
->> 把Path (Bin) 拖到Detail Mark
-> 把Party拖到Detail Mark
-> 把Party拖到列
-> 把Mark Type 改为Line
-> 把Position拖到 Path
->> 右击Position选择Dimension
-> 把X拖到列
->> 右击X,点击Compute Using,选择Path (Bin)
-> 把Y拖到行
->> 右击Y,点击Compute Using,选择Path (Bin)
-> 把Color 拖到Color Mark
->> 右击Color,点击Compute Using,选择Path (Bin)
此时得到下图:
接下来加一些标签:
-> 把Zero拖到行
->> 右击选择双轴
->> 右击坐标轴选择同步坐标轴
现在我们在Marks栏有一个Sum(Zero),对它做以下处理:
-> 去掉其所有的对象
-> 把Vote Share拖到Text
-> 把Seat Share拖到Text
-> 右击Vote Share 和Seat Share,把它们的格式改位带1位小数的百分数
在Y的标记栏删掉 Measure Names,它是自动添加的。
现在我们得到下图:
现在我们生成了一个工作表,显示双层甜甜圈图表,它的内层是Votes数,外层表示Seat数。
调整视图
接下来我们继续优化视图。
-> 去掉所有的网格线
-> 修改Party的颜色
-> 删除甜甜圈的提示内容
-> 隐藏Headers
-> 修改文本格式
-> 调整大小
最终成品!
很喜欢大神的一句话:
I hope you all enjoyed this article as much as I enjoyed writing it.