举个栗子!Tableau 技巧(170):用旭日图 Sunburst Chart 呈现多层数据

本文主要是介绍举个栗子!Tableau 技巧(170):用旭日图 Sunburst Chart 呈现多层数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
旭日图又称太阳图,是一种饼图(或环形图)基础上的升级图表。旭日图既能像饼图一样展示数据各自的占比,还能直观的表达数据的层级和从属关系,呈现数据的构成情况。

旭日图中,每一层图表代表同一级别的数据占比。图表从内到外,对应的数据级别便从高到低,并且相邻两层是内外包含关系。

很多数据粉因为颜值关注到旭日图,希望它让数据分析更美观。其实,旭日图不仅仅是颜值担当,它在实际业务分析场景中,也是一种非常实用的分析图表。

图片

通过旭日图可以了解数据构成、还可以快速洞察业务。如何在 Tableau 中实现呢?今天来分享方法吧!

在这里插入图片描述

本期《举个栗子》,我们要给大家分享的 Tableau 技巧是:用旭日图 Sunburst Chart 呈现多层数据。

为方便学习,栗子使用 Tableau 自带的"示例-超市"数据源。掌握栗子方法后,数据粉可尝试使用自己的数据源。

---------------------------------------------------------------->>

具体步骤如下:

1、准备数据

首先,需要将 Tableau 自带的“示例-超市”数据源做一些调整,改成如下结构:

图片

打开“示例-超市” Excel 数据源,使用数据透视表得到地区、细分、类别、销售额的分层级汇总数据。再根据如下规则添加 Level 列:
IF(NOT(ISBLANK(C2)),3,IF(NOT(ISBLANK(B2)),2,1))

图片

然后,需要准备一个辅助数据源,结构如下:

图片

2、连接数据源

打开 Tableau Desktop,连接数据源。创建 link 计算连接“基础数据源”和“辅助数据源”。

图片

3、创建数据桶和计算字段

➤ 创建 Path 数据桶,如图设置:

图片

➤ 创建计算字段:Index,键入函数
INDEX()

图片

➤ 创建计算字段:Max-Level,键入函数
WINDOW_MAX(MAX([Level]))

图片

➤ 创建计算字段:Max-销售额,键入函数
WINDOW_MAX(MAX([销售额]))

图片

➤ 创建计算字段:Slice-Level,键入函数
WINDOW_MAX(MAX([Level]))

图片

➤ 创建计算字段:Slice-Size,键入函数
[Max-销售额]/WINDOW_SUM(IIF([Max-Level]=1,[Max-销售额]/203,0))

图片

➤ 创建计算字段:Edges,键入函数
IF [Max-Level]>LOOKUP([Max-Level],-1) THEN PREVIOUS_VALUE(0)

ELSEIF [Max-Level]<=LOOKUP([Max-Level],-1) THEN PREVIOUS_VALUE(0)+LOOKUP([Slice-Size],-1)

ELSE PREVIOUS_VALUE(0)

END

图片

➤ 创建计算字段:X,键入函数
IF([Index]<>WINDOW_MAX([Index]) AND [Index]>=(WINDOW_MAX([Index])+1)/2)

THEN

([Slice-Level]+5.8)

  • COS(WINDOW_MAX(2PI())[Edges]+

(WINDOW_MAX([Index])-([Index]+1))WINDOW_MAX(2PI())*[Slice-Size]/(((WINDOW_MAX([Index])-1)/2)-1))

ELSEIF([Index]=WINDOW_MAX([Index]) OR [Index]<(WINDOW_MAX([Index])+1)/2)

THEN

([Slice-Level] + 5)

  • COS(WINDOW_MAX(2PI())[Edges]+

(((IIF([Index]=WINDOW_MAX([Index]), 1,[Index])-1)WINDOW_MAX(2PI())*[Slice-Size]/((((WINDOW_MAX([Index])-1)/2)-1)))))

END

图片

➤ 创建计算字段:Y,键入函数
IF([Index]<>WINDOW_MAX([Index]) AND [Index]>=(WINDOW_MAX([Index])+1)/2)

THEN

([Slice-Level]+5.8)

  • SIN(WINDOW_MAX(2PI())[Edges]+

(WINDOW_MAX([Index])-([Index]+1))WINDOW_MAX(2PI())*[Slice-Size]/((((WINDOW_MAX([Index])-1)/2)-1)))

ELSEIF([Index]=WINDOW_MAX([Index]) OR [Index]<(WINDOW_MAX([Index])+1)/2)

THEN

([Slice-Level] + 5)

  • SIN(WINDOW_MAX(2PI())[Edges]+

(((IIF([Index]=WINDOW_MAX([Index]), 1,[Index])-1)WINDOW_MAX(2PI())*[Slice-Size]/(((WINDOW_MAX([Index])-1)/2)-1))))

END

图片

4、创建视图

在“数据”窗格,右键单击“Level”字段,在下拉菜单中选择:转换为维度。然后,将维度“区域”、“细分”、“类别”依次拖放至“标记”卡的详细信息中。

图片

将标记类型改为“ 多边形“,并将前面创建的“Path(数据桶)”拖放至“标记”卡的路径中,再将维度“Level”拖放至详细信息中。

图片

将计算字段“X”和“Y”分别拖放至列和行,右键单击列上的“X”胶囊,在下拉菜单中选择:编辑表计算。在弹出的对话框中,分别对 X、Index、Edges、Max-Level、Max-销售额、Slice-Size、Slice-Level 做如下表计算。相同的步骤,也对行上的“Y”字段进行设置。

1
图片

2

图片

3

图片

4

图片

5

图片

6

图片

7

图片

在“标记”卡中,将“地区”、“细分”和“类别”字段从详细信息切换成:颜色。再通过设置格式移除网格线和零值线,就得到了我们想要的旭日图。
图片

今天的 Tableau 技巧,你 Get 到了吗?赶快试试看吧!

在这里插入图片描述

文章部分信息来源于网络,如有侵权请告知

这篇关于举个栗子!Tableau 技巧(170):用旭日图 Sunburst Chart 呈现多层数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/210661

相关文章

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr