tableau 图表2020/w19挑战; 曲线Curved lines使用技巧。

本次图表挑战的数据来源是《全世界国家居民幸福指数分析》的报告。

我意图模仿一个好评较多的作品:

https://public.tableau.com/profile/tam.s.varga#!/vizhome/WorldHappinessReport_15892668497850/WorldHappinessReport2020

 

重点提示:

  • 数据规整:创建对应每个幸福指数的Ranking列并最后把它们列转行。
  • 曲线Curived lines的创建。在数据规整阶段,需要复制数据行。以便创建path列存储数据0 ,101。

 

数据清洗

这幅作品对源数据做了清洗。

  • 去掉了多余的列。
  • 把度量幸福指数的7个列,列转行。
  • 增加了一个Ranking,按照从a-z的顺序对国家名进行排列。(❌)这步骤理解有误,第2张图,每个指数都一个Ranking排名。
  • ⚠️(更改上2步):首先每个指数做一个排名,然后再转置。

清洗完成后的列:

 

 我使用tableau Prep进行数据转制:

 

后期需要绘制曲线图重新输出的图:

 

 

 

 

作图

使用tableau desktop作图。

主要分为3部分:

  • 点图:行是幸福总分(ladder score),列是国家名(这里用国家名,创建的计算字段Country_Color, 进行了表计算)
  • 点图:Circle Ranking, 辅助线图。行是Ranking,⚠️每个指数都有一个国家排名。
  • 线图:列是:各个幸福指数。整体呈现一种杂乱和有序的结合。

 

第一部分:点图

本图展示所有的国家的幸福指数。

行:幸福指数

列:各个国家的索引值。⚠️索引是唯一的,代表不同的国家。

目的:用户点击一个点,同步显示线图上的指数。被点击的点高亮(变成粉色,其他的点的颜色变成灰色)

1,要创建“参数”Country_name.

2,使用参数,

  • 创建计算字段Country label_name和Country label_score。目的是当点击一个圆点,显示这个点的国家名和幸福指数。
  • 创建计算字段Country_color。目的是点击一个圆点,会变成粉色,其他的点的颜色变成灰色。

3,行轴使用”Ladder score“的平均值。

4,创建计算字段“表1列”: 使用分区函数index()。这个函数会返回分区中当前行的索引,需要你使用“表计算”功能指定表计算的方式:这里使用“特定维度”:

5,把维度/度量放到标记卡。

  • Country_color放到“颜色”,
  • Ladder score放到“大小”,
  • Country name 放到“详细信息”
  • Country label_name和Country label_score放到"标签",还要更改字体大小和颜色,并允许标签覆盖其他标记。

然后,列"表1列"表计算,按照特定维度分组。

最后,调整颜色,字体,去掉网格线,改轴的颜色,等最后的修饰。

 

第二张图

国家之间不同幸福指数的排名,有7个指数,因此有7个排名,在数据清洗阶段7个排名数据列转置到一起,成为Ranking列, 所以:

行: Ranking.

列:Explained by dimension

本图也要设计一个“大小”,被选中的点是“大点”,其他未被选中的点统一小点,所以用到计算字段Country Size:

IF  [Country name] = [Country_name]
    then 2
ELSE
    1
END

 

然后使用图例调整“编辑大小”

其他步骤:

把几个维度/度量,拖放到“标记”的不同位置。(具体过程略)

 

注意:在导航栏->仪表盘->“操作”->添加操作:“更改参数”。可以添加参数动作。

 

 

 

第三张图:曲线图。

这是我之前未接触的高级tableau使用技巧。

google一下:    tableau how to draw  curve line

网上找到这篇文章:https://tableaumagic.com/tableau-qt-curved-lines/

tableaumagic.com是一个教你用tableau制作各种花哨的图形的网站,包括各种高级技能。后文是绘制曲线图的教学。

 

本挑战绘制曲线图的方法一样。

但是需要对源数据进行变更:

  1. 建立一个副本
  2. 合并后输出。

 

这样就可以根据table name列来创建Path列,并以此创建数据桶Path(bin)曲线图了。

IF [Table Names]='sheet1' THEN 0 ELSE 101 END

 

 

然后把在tableau desktop添加数据源。创建和原来的数据表一摸一样的计算字段后,替换数据源即可。

 

本曲线图的画法类似下面的教学。

可以线创建一个文件夹,然后把需要创建的计算字段放到这个文件夹内:

1.   index(代码和教程相同)

2.  Path, 然后再创建数据桶

3.  lookup

IF FIRST()=0 THEN SUM([ranking]) ELSE sum([ranking])-LOOKUP(sum(zn([ranking])),-1) END

 

如果当前行是第一行,则显示当前行等级

如果不是第一行,则表达式的结果是当前行的等级。

⚠️,这是关键的一步,可以产生对应的曲线效果。

 

4.  TC_value

WINDOW_MAX([lookup])

 

5.  TC_Start Point

RUNNING_SUM([TC_Value]) - [TC_Value]

 

6.  TC_Running Sum

RUNNING_SUM([TC_Value])

 

7. Y (代码同教程)

 

其他调整:

要突出显示的线条被遮挡了,可以通过颜色的排序解决。

   

 

仪表盘

背景色等等调整。结果终于出来拉。

 

 

 


 

 

教学:

把下图数据存入excel然后代入tableau desktop。

绘制曲线图,需要用到辅助列。因此在原数据表,首先每行都复制一次,然后增加列:Path,值只包括0和101。刚刚复制的行,各有一个值0和101。

 

 

使用线图。

 

在tableau,需要创建几个字段:

Path (bin)

右键选中Path度量->"创建"->"bin"数据桶:弹出一个对话框:

 

Index

((INDEX()-1)*0.12)-6

Note: we want the index, used as the X-axis to have 100 points from -6 to 6.

这是因为:我们👆创建的数据桶的值范围从0-101。我们index的范围是从-6~6。把0和101代入公式即可得到-6.12和6。

 

TC_Value

WINDOW_MAX(MAX([Value]))    ⚠️此分组的的Value的最大值


TC_Start Point

RUNNING_SUM([TC_Value])-[TC_Value]  ⚠️ running_sum返回分组从第一行到当前行的计算表达式的和。这里RUNNING_SUM([TC_Value])就是说n个最大值相加。


TC_Running Sum

RUNNING_SUM([TC_Value])

 

Y

[TC_Start Point]
+((1/(1+EXP(-[Index])))*[TC_Value])

Note: 1/(1+EXP(i)) is the Sigmoid Curve function. We multiply this by value to give the desired height.

一个曲线函数。

 

把Path(bin)拖动到列,然后右键单击,确保选中了"显示缺失值"。然后再把它拖动到“标记”的“路径”。

把segment拖动到列

把index拖动到列,表计算选中"Path(bin)".

 

把Y拖动到行,对Y进行一些编辑:

  • Right-click on Y and select Edit Table Calculations.
    • In Nested Calculations select TC_Start Point.嵌套计算选中:TC_Start Point
      • In Compute Using, select Specific Dimensions and ensure that only Segment is checked.
  • Drag TC_Value onto the Tooltip Mark.
    • Right-click on the Object, go to Compute Using and select Path (Bin).
  • Drag TC_Running Sum onto the Tooltip Mark.
    • Right-click on the Object and go to Edit Table Calculations.
    • In Nested Calculations select TC_Running Sum.
      • In Compute Using, select Specific Dimensions and ensure that only Segment is checked.
    • In Nested Calculations select TC_Value.
      • In Compute Using, select Specific Dimensions and ensure that only Path (bin) is checked.

 

 去掉网格线什么的。

 双击x轴,取值范围固定为-6-6。即可得到这个曲线。

 

posted @ 2020-05-21 10:33  Mr-chen  阅读(1627)  评论(0编辑  收藏  举报