您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > Tableau教程-经典图例之Nightingales-Rose(玫瑰图)
小白并非此图的原创,该图来源于tableaupublic,我是从群里拿到的,所以并不知道准确的原创是谁在此小白只是解析做图过程,由于太过繁杂,解释清楚整个过程对我来讲是一种挑战,将用一种循序渐进的方式来讲解,会有几个练习,一步一个铺垫,都是为了做玫瑰图做准备先上图吧(小白使用其它数据,可能与这个图不是一模一样):练习一:使用12条每月的记录数,做一个圆形的散点图,请参照下方的数据与图例Order_datesales2013/1/1215229.212013/2/11491292013/3/1171790.952013/4/1143738.822013/5/1218862.152013/6/1155990.532013/7/1166914.922013/8/1288185.072013/9/1267567.242013/10/1378211.992013/11/1375129.182013/12/1321610.77生成以上数据的脚本:selectDATEADD(DAY,1-DAY([OrderDate]),convert(date,[OrderDate]))asOrder_date,SUM(Sales)assalesfromOrderswhereYEAR([OrderDate])=2013groupbyDATEADD(DAY,1-DAY([OrderDate]),convert(date,[OrderDate]))orderbyDATEADD(DAY,1-DAY([OrderDate]),convert(date,[OrderDate]))1、打开TableauDesktop,选择相应的数据库(把上面的数据存储在EXCEL也可以),选择自定义SQL,输入上面的脚本;2、将字段OrderDate拖至标记功能区,右击该字段,选择“月”;3、创建计算字段,字段名称“x”,内容为:COS((INDEX()-1)*(2*PI()/WINDOW_MAX(INDEX())))创建计算字段,字段名称“y”,内容为:SIN((INDEX()-1)*(2*PI()/WINDOW_MAX(INDEX())))注解:正弦余弦就不赘述了,如果不懂去翻书吧WINDOW_MAX()是为了求得窗体内最大的值,WINDOW_MAX(INDEX())就是为了求得最大的索引值(说白了就是序列号)4、将X字段拖至列功能区,右击该字段,编辑表计算:根据以下因素计算:Order_date所在级别:Order_date月重新启动间隔:无将Y字段拖至行功能区,与X字段设置相同4、按住CTRL键,将标记功能区中的[Order_date]拖至筛选器,选择“月”;5、通过选择不同的月份,我们可以看到,无论有几个月份,里面所有的点都处于均匀的角度分布;小结:以上的练习是为了让大家了解,如何将各个分区均匀分布,无论是12个月,或者是5个月,或者是7个月,都是均匀分布的练习二:只用两条数据:ID1102来做一个多边形扇形1、打开TableauDesktop,选择数据源,该数据源之包含两条记录:1、1022、在工作表设计界面,右键度量中的id,创建--数据桶,弹出窗体中数据桶大小:13、将id(数据桶),拖至行功能区,右击,选择“显示缺省值”,可以看到,原来只有1和102两条记录,现在数据变为1至102,而后将该字段拖至标记功能区4、分别创建计算字段x,y字段内容分别为:cos(2*PI()*(index()-1)/WINDOW_MAX(INDEX()))sin(2*PI()*(index()-1)/WINDOW_MAX(INDEX()))5、将字段x拖至列功能区,去y字段拖至行功能区右击x字段,计算依据--id(数据桶)右击y字段,计算依据--id(数据桶)标记功能区选择图形为:多边形得到下图:6、将标记功能区的id(数据桶)拖至路径,我们得到一个圆球注意:这里是多边形做的,不是用饼图或圆点图思考:我们希望得到一个扇形,目前是一个饼图,如果将开始位置和结束位置的点都放在圆心,那会怎么样呢6、我们对字段x和字段y做一些修改:x字段:IIF(INDEX()=1orINDEX()=WINDOW_MAX(INDEX()),0,cos(2*PI()*(index()-1)/WINDOW_MAX(INDEX())))y字段:IIF(INDEX()=1orINDEX()=WINDOW_MAX(INDEX()),0,sin(2*PI()*(index()-1)/WINDOW_MAX(INDEX())))得到下图:小结:我们的到了一个接近圆形的,扇形,当然,角度边小一些更清楚的看到是扇形继续思考:练习1解决了维度均匀分区的问题,练习2解决多边形扇形问题如果将扇形多边形放在每个分区里,问题是否可以得到解决正式开始制作玫瑰图:数据源准备,使用脚本生成数据:在附件中1、打开TableauDesktop,选择SQLSERVER,选择自定义SQL,输入上面的脚本;2、在工作表界面,右键path,创建,数据桶;3、创建计算字段Count内容:index()index内容:index()Edges内容:index()是为了定义计算级别4、创建计算字段Angle,内容:([Edges]-1)*(2*PI()/WINDOW_MAX([Edges]))类似于练习1的功能,取得每个分区的开始弧度5、创建计算字段Radius,内容为:AVG([sales]),是为了求得每个分区半径的6、创建计算字段NumberofSlices,内容WINDOW_MAX([Count])注:个人对这个地方不是很理解7、分别创建计算字段X,YIIF([Index]=1OR[Index]=WINDOW_MAX([Index]),0,WINDOW_MAX([Radius])*COS([Angle]+((([Index]-2)*WINDOW_MAX(2*PI())/([NumberofSlices]*99)))))IIF([Index]=1OR[Index]=WINDOW_MAX([Index]),0,WINDOW_MAX([Radius])*SIN([Angle]+((([Index]-2)*WINDOW_MAX(2*PI())/([NumberofSlices]*99)))))基本思想,从中心点出发,最后回到中心点,那这个扇形将会被平均分为多少个等分,是99个①举例:假设index总共有5个点,1与5在中心点,2与4两个弧的边角,中间只有4,也就是弧度被分为2等分5-3=2102-3=99((([Index]-2)*WINDOW_MAX(2*PI())/([NumberofSlices]*99))))②上面弧度加+分区开始弧度=((([Index]-2)*WINDOW_MAX(2*PI())/([NumberofSlices]*99))))+[Angle]8、标记功能区选择图形为多边形9、将X字段拖至行功能区,将Y字段拖至列功能区,Date拖至标记功能区,右击--月,然后拖至颜色path(数据图)拖至标记功能区--路径(确保显示缺省值)10、右击行功能区中X字段,编辑表计算--根据以下因素计算--高级分区:Date月寻址:path(桶)然后点击确定,回到上一个界面点击应用,!!!!!一定要点击应用,这里不要退出11、计算字段是有下拉列表的index:根据以下因素计算:path(数据桶)Angle:根据以下因素计算:Date所在级别:Date月重新启动间隔:无Edges:根据以下因素计算:Date所在级别:Date月重新启动间隔:无Count:根据以下因素计算:Date所在级别:Date月重新启动间隔:无NumberofSlices:根据以下因素计算:高级分区:空寻址:Date月path(数据桶)12、对Y字段做同样的设置,你的图应该可以看到假设你的图没有看到,那你也别问我,都写恶心啦
本文标题:Tableau教程-经典图例之Nightingales-Rose(玫瑰图)
链接地址:https://www.777doc.com/doc-5598026 .html