【TOAN HOANG 专题(86)】乙状曲线图
本文搬运自国外tableau大神原创文章,Tableau交流问答群为国内唯一独家授权组织,未经许可不得转载!


这将是一个比大多数更长的帖子,因为我想给你这个可视化背后的完整想法,并告诉你如何结合几个技术,以建立这个最史诗。当我在写一个关于如何构建凹凸图的教程时,这个可视化的想法击中了我,虽然我这个可视化非常有用,但是缺少了一些东西。这让我很困扰,因为我不仅想看每月的排名,而且想直观地显示不同维度之间的差异。所以很自然,我把凹凸图和条形图结合起来,为了增加吸引力,我利用了乙状曲线来增加日期之间的连通性,因此,我的第一个EpicViz诞生了。
ToanHoang:知名Tableau大神,数据可视化自由职业者和Tableau Magic的创始人,萨尔萨舞教练,钢琴演奏者,技术爱好者和程序员。
另本文由Tableau交流问答群Tableau爱好者—高全玉对原文进行翻译,若有问题,欢迎讨论。本期是 乙状曲线图,希望你们都喜欢这个。
备注:这是数据可视化的一种类型,有时候由需求推动,在部署到生产环境之前,请始终查看这是否您最佳的展示方法。
数据
打开Excel表格,将下列数据导入作为数据源,接着把数据加载到Tableau
Desktop/ Tableau Public
Country,Date,Path,Value
United Kingdom,01/01/2018,1,500
United Kingdom,01/01/2018,201,500
United Kingdom,01/02/2018,1,300
United Kingdom,01/02/2018,201,300
United Kingdom,01/03/2018,1,400
United Kingdom,01/03/2018,201,400
United Kingdom,01/04/2018,1,800
United Kingdom,01/04/2018,201,800
United Kingdom,01/05/2018,1,200
United Kingdom,01/05/2018,201,200
France,01/01/2018,1,400
France,01/01/2018,201,400
France,01/02/2018,1,400
France,01/02/2018,201,400
France,01/03/2018,1,800
France,01/03/2018,201,800
France,01/04/2018,1,500
France,01/04/2018,201,500
France,01/05/2018,1,300
France,01/05/2018,201,300
Germany,01/01/2018,1,800
Germany,01/01/2018,201,800
Germany,01/02/2018,1,100
Germany,01/02/2018,201,100
Germany,01/03/2018,1,300
Germany,01/03/2018,201,300
Germany,01/04/2018,1,600
Germany,01/04/2018,201,600
Germany,01/05/2018,1,900
Germany,01/05/2018,201,900
Belgium,01/03/2018,1,400
Belgium,01/03/2018,201,400
Belgium,01/04/2018,1,1000
Belgium,01/04/2018,201,1000
Belgium,01/05/2018,1,750
Belgium,01/05/2018,201,750
Brazil,01/02/2018,1,150
Brazil,01/02/2018,201,150
Brazil,01/03/2018,1,200
Brazil,01/03/2018,201,200
Brazil,01/04/2018,1,300
Brazil,01/04/2018,201,300
Brazil,01/05/2018,1,200
Brazil,01/05/2018,201,200
创建数据桶:
把字段path移至维度,右键单击path,转到创建并选择数据桶。在“编辑级”对话框中:
a 将新字段名设置为 Path (bin)
b 将数据桶大小设置为1
c 单击 "确定"
创建参数
创建一个名为Distance 的参数
a 数据类型:整数
b 当前值:19
c 单击 "确定"
创建计算字段
Index
INDEX()-1
TC_Last
LAST()
备注:我们将使用以确保最后一列没有曲线。
TC_Value
WINDOW_MAX(MAX([Value]))
TC_Max Value
WINDOW_MAX(MAX([Value]))
TC_Percentage
[TC_Value]/[TC_Max Value]*100
TC_Current Position
RANK_UNIQUE([TC_Value],"desc")
TC_Next Position
LOOKUP([TC_Current Position], 1)
细节:用于查找下一个位置,以便计算曲线的高度。这在TC_乘法器中使用。
TC_Size
IF [Index] < [TC_Percentage]+[Distance] AND [Index]> [Distance] THEN
1
ELSE
0
END
细节: Distance参数用于控制从左侧的距离。所有点返回1以绘制圆形条形图。
TC_Sigmoid
1/(1+EXP(-(-6+([Index]-151)*6/25)))
备注:这是硬数学部分,是在圆条形图的末尾绘制乙状曲线的公式。
TC_Multiplier
IF [TC_Last] = 0 THEN
0
ELSE
ZN([TC_Next Position])-ZN([TC_Current Position])
END
Y
IF [Index] < 151 THEN
RANK_UNIQUE ([TC_Value])
ELSE
RANK_UNIQUE([TC_Value])+([TC_Sigmoid]*[TC_Multiplier])
END
备注:我们有200个点玩,对于前150个点,我们正在绘制圆形条形图,然后我们正在绘制的乙状曲线。
创建工作表
1. 将 标记类型 更改为线
2. 将Country 拖到 颜色标记 框上
3.将Date 拖到 列 上(Date的数据类型为日期)
右键点击Date,选择 精确日期
右键点击Date,选择 离散
4. 将 Path (bin) 拖到列上
右键单击 Path (bin),并确保选中“显示缺失值”,
将Path (bin)拖到路径标记上
5. 将Index拖到列上
右键单击 Index,将计算依据选为Path (bin)
6. 把Y拖到行上
右键单击 Y,将计算依据选为Path (bin)
如果一切顺利,您现在应该看到以下内容:

我们现在要调整Y的表计算设置,分阶段,我们将进入最终的可视化:
右键单击 Y,选择'编辑表计算'
在嵌套计算中,选择Y
a. 计算依据选择"特定维度"
b. 勾选 Date 和Country ,并且Date在上方
c. 设定重新启动间隔: Date
在嵌套计算中,选择TC_Last
a. 计算依据选择"特定维度"
b. 未勾选任何项目
现在应该看到以下内容:

下面做如下调整:
a. 双击Y轴,将Y轴的范围,设为固定,值在0.5到5.5之间
比例勾选倒序
b. 隐藏X轴
c. 重命名Y轴 轴标题为Rank
d.右键选择Date,设置格式,自定义
e. 设置 网格线 为无
f. 设置 行分隔符 为无
g. 设置 列分隔符 为无
现在应该看到以下内容:

即使你在这里停止教程,你也有一个很酷的可视化效果,你可以点击左边的国家,然后看到以下内容:


但我们不想就此止步,让我们再次调整Y的表计算:
1. 右键单击 Y,选择'编辑表计算'
在嵌套计算中,选择TC_Next Position
a. 计算依据选择"特定维度"
b. 勾选 Date 和Country ,并且Country在上方
在嵌套计算中,选择TC_Current Position
c. 计算依据选择"特定维度"
d. 勾选 Date 和Country ,并且Date在上方
e. 设定重新启动间隔: Date
在嵌套计算中,选择TC_Last
a. 计算依据选择 表(横穿)
2.右键Index,选择"显示标题"
3.双击Index轴
a. 将轴的范围,设为固定,值在0到200之间
b. 隐藏Index标题
现在应该看到以下内容:

我们现在已经使用乙状曲线公式为每个国家创建了一条连续的直线


现在我们将通过添加圆角条形图来完成数据可视化。
1.拖TC_Size到 大小标记卡
右击TC_Size,将计算依据选择path(bin)
2.右键单击 TC_Size,选择'编辑表计算'
在嵌套计算中,选择TC_Max Value
a. 计算依据选择"特定维度"
b. ]勾选 Date ,Country 和path(bin),并且Date 在上方,
path(bin)在底部
3.添加工具提示
最终可以看到效果图如下:

以下为国外Tableau大神Toan Hoang原创链接:
https://tableaumagic.com/tableau-magic-epicviz-vol-1/
Toan Hoang专题系列其他译文见如下链接:
网友评论