chentianwei

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

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

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.

这是因为:我们

分类:

技术点:

相关文章:

  • 2021-07-05
  • 2021-06-22
  • 2021-11-19
  • 2022-01-07
  • 2021-08-04
  • 2021-04-15
  • 2021-12-13
  • 2022-12-23
猜你喜欢
  • 2021-11-19
  • 2021-05-30
  • 2021-11-19
  • 2021-12-09
  • 2021-05-12
  • 2021-06-08
  • 2021-08-11
相关资源
相似解决方案