目录
1、雷达图
2、 箱线图/盒须图
3、 圆环图
4、南丁格尔玫瑰图
5、蝴蝶图
6、帕累托图
7、瀑布图
前期准备:描述产品或者用户多维度的数据
感觉Tableau画雷达图比其他可视化软件相对要复杂些,雷达图本身的背景(多个半径等差的同心圆转换得到的多边形)也是需要我们自己去画的,所以就需要另外画多个多边形图。
1.1 选中量化的变量数据,创建数据透视表
1.2 这里是关键步骤,但是理解原理还是需要数学知识的
创建数据透视表后会出现两个字段:数据透视表字段名称,数据透视表字段值,如果会编程经验的会发现这是一个宽数据变长数据的操作(gather到spread)
需要创建四个通过计算得到的变量:路径、弧度、数据字段标签、数据值标签
1.2.1路径:衡量的指标的在雷达图的各个顶点放置顺序(个人理解),增加的路径(变量数+1)为了使得雷达图连线闭合(在网上看了很多解释,也没有说的十分透彻的,但是验证后会发现确实是这样),这个路径是为了将多个同心圆的半径顶点用直线连接起来,这样就形成了一个多层多边形,而不是多层同心圆。
路径:
CASE [数据透视表字段名称]
WHEN "购买频率" THEN 1
WHEN "平均交易额" THEN 2
WHEN "最高交易额" THEN 3
WHEN "购买商品种类" THEN 4
WHEN "浏览次数" THEN 5
WHEN "单次浏览时长" THEN 6
ELSE 7 #这个就是增加的路径,使得雷达图闭合
END
1.2.2 弧度:这个的计算逻辑还没有查清,网络上都说的确定x、y,但很模糊,还没查到相关准确资料,但是可以根据公式给出需要的图形,根据实践后,这个弧度确定了指标对应值的位置方向,这里需要懂一点极坐标系的知识。
图源:百度百科
弧度:
if [路径]=7 then pi()/2
else pi()/2-([路径]-1)*2*pi()/6
end
1.2.3 计算X、Y轴:这个应该比较好理解,数据值*cos弧度的结果为这条极径的长度(相当于对应指标在这方面的一个衡量值的大小表示)
X=[数据透视表字段值]*COS([弧度])
Y=[数据透视表字段值]*sin([弧度])
1.2.4 数据、指标标签:
指标标签:容易理解,每个标签需要位于雷达图的各个角顶点,所以只有利用最外层圆(最外层多边形)进行标签,当数据透视表值为最外层圆半径值时,将其赋值为数据透视表字段名称,即为指标名称。
IF [数据透视表字段值]=10 THEN [数据透视表字段名称]
END
1.2.5 作图,这里面的有些步骤在网上、tableau的一些资料里面都没有明确写出说明,可能是tableau基础知识不牢固。
顺序依次为:
①X、Y分别放入列、行,且X、Y的标记需要更改为线,注意的是需要设置双轴,则Y要复制一次,并在下拉选项中选择双轴;
②将路径、测试的对象列(如:用户A、用户B、用户C的列)分别放入标记块的路径、颜色中;
③数据值标签、指标标签放入标签中。这里面有一步骤在tableau菜单中分析选项的取消聚合变量,理解有些模糊。
说实话,tableau话这个是真的丑,也可能本编技术还没熟透。
分别把两个变量放入列、行,至于标记怎么改,试一试就知道了,最终只有圆合适。智能显示那里选盒须图就OK了。
这个东西之前做的时候还是用两个图去拼的,看来是基础知识忘得太多了,不过不怕,本编快速学习就搞定,网上搜索资料了马上搞定。
按照常规做法画一个饼图
将度量变量中的记录数放入行中,要double哦,原因是需要设置双轴,来重合两个不同大小的饼图。
这时候会出现两个相同的饼图,需要做的是将其中一个饼图颜色改为白色,并改变其大小;
下一步就是点击记录数坐标轴选择双轴,这样就可以完成圆环图的制作了哦。
有点丑,随便弄得数据,不准吐槽。
4.1 创建数据桶,数据中需要的变量有离散字段及对应值、path(用来创建数据桶),这里需要两组数据:离散字段,对应值,path(数据桶最小值);离散字段_副本,对应值,path(数据桶最大值)。
数据桶这个名词的含义有点模糊,查到资料解释是:任何离散字段都可被认为是一组数据桶。用户、评分组成的一个数据表,每个离散字段(用户)对应的值(评分)会按照数据桶进行分类,该数据桶与里面记录值的离散字段对应。
对于数据桶值的大小可以根据下面这个公式来确定,创建数据桶时候会默认给出建议的数据桶大小
计算最佳数据桶大小:Number of Bins = 3 + log2(n) * log(n)(n:数据中不同行的数量,每个数据桶大小通过将最大、最小值之间的差除以数据桶数来确定)
4.2 创建各个参数
计算参数名 | 公式 | 说明 |
Count | INDEX() | 计算玫瑰片数(扇形个数) |
Number of Slices | WINDOW_MAX([Count]) | 计算玫瑰片数(扇形个数) |
Index | INDEX() | 计算X和Y轴 |
Angle | ([Edges]-1)*(2*PI()/WINDOW_MAX([Edges])) | 计算弧度 |
Edges | INDEX() | 计算弧度 |
Radius | SQRT(AVG([评分])/PI()) | 计算半径 |
X轴 | IIF([Index]=1 OR[Index]=WINDOW_MAX([Index]),0,WINDOW_MAX([Radius]) *COS([angle]+((([Index]-2)*WINDOW_MAX(2*PI())/([Number of Slices]*10))))) |
这里的10是将每个扇形被分成10等份 |
Y轴 | IIF([Index]=1 OR[Index]=WINDOW_MAX([Index]),0,WINDOW_MAX([Radius]) *SIN([angle]+((([Index]-2)*WINDOW_MAX(2*PI())/([Number of Slices]*10))))) |
这里的10是将每个扇形被分成10等份 |
4.3 作图:将X、Y放入行、列中,离散字段(购买力)放入标记的颜色、详细信息中,path(数据桶)放入路径;在X、Y的下拉选择中选择表计算,X、Y中的表计算做同样操作:X/Y、index计算依据更改为path数据桶,其余选择为购买力(此处为该字段)
不要问我这个是啥,我也不知道,啊啊啊
5.1 在同一个工作表实现,将两个数值字段放入列中、离散(如:类别)字段放入行中,接下来就是将左侧的数值字段轴更改为倒序,这样好像太丑了。
于是换一种去掉左侧标题,在两个数值字段中间加入标题,创建一个0轴(中间轴=AVG(0))将其放在两个字段中间,其次将该轴的标记方式更改为文字,最后添加需要作为标题的字段放入标记中。
5.2 在仪表板中拼接实现 ,这个就很简单,画两个水平条形图进行整合就ok
这个图重要的就是累计百分比图的设计:两种方式:创建计算字段(累计百分比:RUNNING_SUM(SUM([number_of_reviews])/TOTAL(SUM([number_of_reviews]))));直接在字段下拉菜单操作: