
旭日图(Sunburst charts)用于展示分层数据。它是一种分层图表,虽然可以用3D表示,但通常用于2D。旭日图建立在圆圈之上,每个层次的层次结构都显示为圆圈上的一个环。最外面的圆显示聚合数据,内部圆显示该聚合数据中包含的子类别信息。当用户将鼠标悬停在内环之一上时,他们将看到该内环中包含的所有子集。

旭日图(Sunburst charts)的组成部分
1.环( Rings ):
旭日图是一种显示节点之间层次关系的圆形可视化。它由一系列同心圆环组成,每个环代表不同层次的层次结构。
每个环被划分为片段,以显示每个节点有多少个子节点。每个片段都有一个标签,指示它代表哪个子节点,并且片段本身可以进一步细分为多个子片段,以突出显示两个节点之间的具体关系。
2.图表( Charts ):
旭日图是分层数据的径向可视化。它们用于显示分层数据并概述数据的结构。
旭日图由多个组件组成:
- 图表的中心点(核心)
- 包含数据集中所有值的外环
- 弧,连接节点并用于显示它们之间的关系
- 节点标签,显示每个数据元素的名称
通过旭日图的径向结构,我们可以更深入地了解数据的层次结构和子类别之间的关系。这种可视化方式使得我们能够直观地观察每个数据段与其父节点之间的联系,从而更好地理解数据的使用模式和趋势。
树状图(Treemaps)和旭日图(Sunburst)
树状图和旭日图都能有效展示不同数据类别之间的关系,但它们各有优势和劣势。树状图适用于宏观级别的数据,而旭日图则允许您深入了解子类别。另一方面,如果您尝试在树状图中展示多个数据层级之间的关系,可能很难将所有信息都放在一页上。旭日图可以让您立即看到所有数据,因为它们在利用空间方面更有效率。

旭日图(Sunburst)的应用场景
旭日图在商业中通常用于可视化分层数据,例如组织结构、销售数据和网站流量。该图表提供了清晰的层次结构视图,使用户能够快速识别数据中最重要的组成部分。旭日图在商业中的一些具体用例包括:
- 销售分析:旭日图可用于按产品类别、地理位置和时间段分析销售数据。这有助于确定增长的关键领域和改进的机会。
- 网站流量:Sunburst 图表可用于按地理位置、推荐来源和访问的页面可视化网站流量。这有助于识别最受欢迎的页面、推荐来源和地理位置。
- 组织结构:旭日图可用于表示组织结构,例如部门、团队和员工的层次结构。这有助于理解报告结构并确定潜在的改进领域。
旭日图(Sunburst)的优势
旭日图是一种出色的视觉方式来表示分层数据。当所有信息都在一个视图中显示时,它们效果最佳,并且可以让您一次看到所有数据。以下是使用旭日图的一些优势:
- 可视化分层数据:旭日图非常适合可视化分层数据结构,比如企业结构或家庭谱系,其中图表的每个部分都可以表示层次结构内的特定类别。
- 空间利用效率高:旭日图利用圆形空间来显示信息,因此在相对较小的空间内展示大量数据,这使得它们特别适用于数字仪表板和其他屏幕空间有限的应用。
- 揭示模式和趋势:这些图表可以帮助揭示数据中的模式、趋势和关系,这些在其他类型的可视化中可能难以看到。
- 易于比较:它可以轻松比较不同的组件。段的大小和颜色可以用来表示不同的变量,这样就可以轻松地比较这些变量在不同类别之间的差异。
- 提供详细信息:旭日图为层次结构中的每个级别提供详细信息。将鼠标悬停在一个段上可以显示该段的更多信息,比如它相对于整体的大小或与其他段的关系等。
- 多用途性:这些图表可以在各个领域使用,包括企业销售分析、网站分析用户路径分析和生物学物种分类等。
然而,值得注意的是,如果层级或类别过多,旭日图可能变得混乱且难以阅读。最好在有限数量的层次和类别下使用它们。
如何在 Python 中生成旭日图
为了举例说明,假设我们有一个数据集,其中包含在线零售商的网络流量信息。数据集包括四个字段:
- 位置:表示网络流量的地理位置。
- 引用来源:标识将网络流量引用到网站的来源。
- 页面:指定所访问网站的特定页面。
- 访问次数:表示特定位置的特定推荐源对特定页面的访问次数。
要生成包含这些字段及其相应定义的随机数据集,您可以使用以下语法:
# import necessary libraries
import pandas as pd
import numpy as np
# create sample data
locations = ['United States', 'Canada', 'Mexico', 'Brazil', 'Argentina']
referral_sources = ['Search Engines', 'Social Media', 'Email Campaigns', 'Direct Traffic', 'Referral Sites']
pages_visited = ['Homepage', 'Pricing', 'About Us', 'Blog', 'Contact Us']
visits = np.random.randint(1000, 10000, size=(len(locations) * len(referral_sources) * len(pages_visited)))
# create dataframe
df = pd.DataFrame({'Location': np.repeat(locations, len(referral_sources) * len(pages_visited)),
'Referral Source': np.tile(np.repeat(referral_sources, len(pages_visited)), len(locations)),
'Page': np.tile(pages_visited, len(locations) * len(referral_sources)),
'Visits': visits})
# select data where the location is 'United States'
df_us = df[df.Location == 'United States']
# concatenate the selected data with the original dataframe
df = pd.concat([df, df_us], axis=0)
# display the first few rows of the resulting dataframe
df.head()

创建数据集后,我们可以使用以下代码生成旭日图:
import plotly.express as px
# plot sunburst chart
fig = px.sunburst(df, path=['Location', 'Referral Source', 'Page'], values='Visits')
# set title
fig.update_layout(title={
'text': 'Website Traffic Sunburst Chart',
'x': 0.5, # sets the x-axis position to the center
'y': 0.95 # sets the y-axis position to be just above the chart
})
# show chart
fig.show()

旭日图是一种强大的可视化工具,可以帮助企业理解复杂的层次数据。借助可用的 Plotly 库,现在可以比以往更轻松地生成满足您业务需求的 Sunburst 图表。