使用散点图查找报表中的详细信息

原创:      2024-05-31 19:00


本文翻译自Kurt Buhler的文章—《Using scatterplots to find details in reports》来源:SQLBI 本文介绍如何使用散点图视觉对象制作更有效的 Power BI 报表。


在许多报表中,通常会有包含大量信息的大型表或矩阵。业务用户访问这些报告是为了获取制定决策和采取行动所需的详细信息。但是,这些详细的表可能效率并不是那么高,需要用户对它们进行排序、深入分析和筛选才能找到可操作的数据。

考虑以下矩阵示例,该表主要分析按产品划分的同比增长差距,并按地区剖析这些差距。在这种情况下,报告的预期目的是让销售团队分析组织没有达到收入增长目标的原因。


尽管是一个简单的例子,但矩阵是低效的。对于用户来说,对其进行分析既困难又耗时,除非他们已经知道自己在寻找什么。我们可以尝试通过添加一些格式来改进它,但这并不能解决我们的根本问题:

  • 用户一次只能看到几行。他们对数据的完整上下文的了解有限

  • 细节不会自己主动浮出水面。对于用户来说,查找异常值既耗时又低效,需要对表进行排序和筛选或使用向下钻取

  • 视图不灵活。它按产品显示区域,但如果我们想做相反的事情(例如,如果我们想了解单个区域内的产品销售情况),该怎么办?这通常会导致冗余的多页报告,对相同信息的细分略有不同。

解决这些问题并改进报表的一种方法是使用散点图 散点图是有用的图表,可帮助用户快速查找可操作的详细信息,并使用 Power BI 中的交叉筛选来钻取详细信息。异常值和有趣的数据点组很容易被发现。例如,考虑下面散点图左上角的红色圆圈。用户可以很容易地挑选出并专注于这些产品,因为视觉效果使这些细节浮出水面,而不是强迫用户自己在相邻的矩阵中找出要点。


读取和使用散点图

散点图是一种图表,用于显示两个度量的数据点的分布(或散点)。在图表中,每个数据点表示维度的单个成员;例如,产品或客户名称。您可以根据数据点在图中的位置读取值。

散点图在以下场景中很有用:

  • 您有许多数据点,并希望查看它们的分布或分配。

  • 您希望识别异常值,或者值异常高或异常低的数据点。

  • 您希望确定某些数据点是聚集还是组合。

  • 您希望查看一个或多个数据点与其他数据点位置的比较。

  • 您想要探索两个变量之间的潜在关系。

下图显示了两个散点图示例,说明了产品的这些场景。


在第一个示例中,我们可以清楚地看到“计算机”类别是一个异常值;它远离其他产品类型,具有最高的上一年销售额(上一年的销售额)和最低的同比销售额(同比销售额)。对于用户来说,这很明显表示他们应该关注计算机类别,以了解为什么没有制定增长目标。

继续分析,第二个例子展示了许多更有趣的东西。在这个例子中,我们正在查看单个产品的利润率百分比与年销售额。我们可以清楚地看到,我们的产品似乎分成了高、中、低利润率的部分。此外,与所有其他类别的产品(用红色虚线框表示)相比,计算机类别中的产品通常具有较低的年销售额。但请注意,这部分只是计算机类别中产品的一个子集;其他点的密度隐藏了计算机产品的许多数据点。这个散点图很适合探索性分析,以发现或突出可能的分割,但需要更深入的分析才能获得最终结论。

这两个示例演示了如何使用散点图清晰有效地查看大量有价值的信息。

散点图的类型

有不同类型的散点图,它们在不同的场景中使用。前五个 (1-5) 都可以使用散点图核心视觉对象,而其余 (6-8) 需要在报表中使用自定义视觉对象,或在 Fabric 笔记本中使用(例如,通过使用 Python 包可视化数据,例如 seaborn)。


  1. 散点图:标准散点图。

  2. 动画散点图:使用播放轴动画显示演变的散点图。

  3. 气泡图:当您想通过三个度量值查看数据时,其中第三个度量值会更改数据点(或气泡)的大小。

  4. 象限图:当您想要将数据点分类为四个不同的段或象限时。

  5. 火山图:当您想要查看数据在两个条件或时间段之间的变化情况时。

  6. 连接散点图:当您想要显示两个度量的一个或多个数据点的演变时。

  7. 联合图地毯图:当您希望在边距中的图表显示沿轴的分布时。地毯图通常比使用直方图的标准联合图更紧凑。

  8. 群图条带图:当您想要显示沿单个轴(而不是两个轴)的分布时。虽然不是明确的散点图类型,但这些图表在外观上相似,值得一提。这些图可以添加随机间距(或“抖动”),以便您查看分布。群图(也称为抖动图)可确保数据点不重叠,而它们可以在条带图中重叠。

散点图还有其他替代方法,例如双变量 KDE 图(或密度图)、双变量直方图十六进制图,当您想要对数据进行分箱时,它们更有用,因为数据点的数量非常多。但是,与前面的一些示例一样,只能在 Power BI 报表中使用自定义视觉对象合理地创建这些图表类型。

Power BI 散点图的另一个潜在限制是高密度采样。出于性能原因,这会限制一次显示的数据点数。默认情况下,此限制设置为 3,500,但您可以自行将其增加到最大 10,000。这意味着,如果要查看 100,000 个产品的分布情况,则根据算法,最多只显示 10,000 个产品。自定义视觉对象也无法克服此问题,自定义视觉对象使用数据缩减算法将数据限制在前 N 行。但是,对于大多数自定义视觉对象(最多 30,000 个),此限制可能更高,对于 R 视觉对象(150,000 个)最高。结果是,当总数非常高时,未经过滤的图表可能会错过数据点。

根据您的方案和需求,您可以使用不同类型的散点图。在以下示例中,我们将逐步向您展示如何创建火山图(上面描述中的数字 5)以支持同比分析。在以后的文章中,我们将展示其他类型的散点图和相关视觉对象。

创建火山图

回到我们最初的场景,用户希望按产品检查同比增长,以了解为什么我们去年没有达到目标。在此方案中,用户希望确定哪些产品需要更深入的分析和后续操作。对于按产品划分的散点图(特别是用于逐年比较的火山图)来说,这是一个很好的用例。火山图通常用于生物医学数据的统计分析,如组学分析,但正如我们将看到的,它可以应用于此用例之外的许多其他场景。

要制作此图,我们应该首先向轴添加度量。具体来说,我们将目标添加到 Y 轴,并将比较添加到 X 轴。在本例中,Sales PY 位于 Y 轴上,Sales YoY 位于 X 轴上。然后,我们将产品层次结构添加到视觉对象的“值”部分。通过添加完整的层次结构(而不仅仅是产品名称),我们允许用户执行深入分析。

结果是一个视觉对象,其中更左边的数据点更落后于目标,而更右边的数据点更高于目标。数据点越高,目标越高。


接下来,我们应该添加格式以使此图表更有用。

  • 添加一行以明确表示零。您可以通过使用设置为零的 X 轴常量线来执行此操作。这在视觉上显示了销售额同比变为负数或正数的明确点。

  • 使用透明的 Min 和 Max 常量线添加标签,将线名分别标记为“低于目标”和“高于目标”。

  • 添加描述性标题和副标题。这将帮助用户理解和解释视觉对象。

  • 清理行条和字体。这将使视觉对象更易于阅读。

  • 通过将 Sales 添加到“Size”属性,使用 size 来帮助强调要点。这样一来,销量更高的产品就会更大,并得到更多的视觉强调。

  • 使用条件格式通过按 Sales YoY 着色来强调要点,例如异常值。或者,我们可以按产品类别着色以直观地识别细分市场。

  • (可选)使用缩放滑块允许用户控制轴范围并调查更密集的聚类数据点。

通过这些格式更改,我们有了火山图。下图显示了两种可能的图,具体取决于您选择按销售额同比还是按产品类别为点着色。


虽然散点图本身已经很有价值,但我们可以通过几种不同的方式从中获得额外的价值。以下各节概述了三种更高级的方法,以进一步改进报表中散点图的使用。

示例 1:交叉筛选详细信息表

Power BI 报表中最强大的功能之一是能够通过交互交叉筛选视觉对象。单击一个视觉对象中的数据点时,它会筛选或突出显示其他视觉对象,以显示该数据点的详细信息。对于散点图,这是非常强大的。

当用户看到散点图时,他们通常希望获得有关相关数据点的更多详细信息。您可以使用工具提示和交叉筛选等技术向他们提供这些详细信息。例如,您可以在散点图旁边或下方包含一个详细信息表,以提供补充信息。这样,用户可以使用散点图来驱动表,并仅获取相关数据点的详细信息。虽然可以使用 CTRL + 左键单击来选择多个点,但使用套索选择会更好,但不幸的是,这在 Power BI 中尚不可用。


对于更具探索性的报表,您甚至可以考虑使用两个相互过滤的散点图。这在检查两个密切相关的属性(如区域和产品)之间的模式时特别有用。以下示例显示了在从产品到状态进行交叉筛选时的外观,反之亦然。


在上面的例子中,我们可以看到“第一次世界大战台式电脑”的各州销售同比分布,这很容易显示最落后的地区。相反,我们可以看到“高地”州按产品名称划分的销售额同比分布,这显示了最落后的产品。

交叉过滤是一项强大的功能,可以真正改进散点图在报表中的使用方式。

示例 2:帕累托格式

改进散点图的另一种方法是直观地标记或识别需要特别注意的点。一个例子是执行帕累托分析。在帕累托法中,您可以确定哪些类别可以解释变量的大幅增加。例如,我们可以对销售额同比为负的产品进行帕累托分析。在此分析中,我们将销售额同比负值称为差距。具体来说,它是当年销售额(销售额)和上一年销售额(销售额 PY)之间的差距。

为此,我们首先创建一个指标来确定销售额同比的差距:

“销售额”表中的度量值

Pareto (Gap) =

-- Retrieve only the values for which Sales PY < Sales Amount (the gap)

VAR _Actuals = [Sales Amount]

VAR _Target = [Sales PY]

VAR _Delta = _Actuals - _Target

VAR _Gap =

-- Intend to only compute the cumulative percentage for the negative values

IF( _Delta > 0, BLANK( ), ABS( _Delta ) )


RETURN

_Gap

之后,我们创建第二个度量值,按产品名称计算差距的累积百分比。这使我们能够确定对销售额同比差距贡献最大的产品:

“销售额”表中的度量值

Pareto =

-- Cumulative percentage of the gap to find which products have the most significant contribution to negative Sales YoY

VAR _Gap = [Pareto (Gap)]


VAR _ByProductName =

ADDCOLUMNS (

ALLSELECTED ( 'Product'[Product Name] ),

"@Gap", [Pareto (Gap)]

)


VAR _Cumulation =

FILTER (

_ByProductName,

[@Gap] >= _Gap

)


VAR _CumulativeAmount =

SUMX ( _Cumulation, [@Gap] )


VAR _Total =

SUMX ( _ByProductName, [@Gap] )


VAR _CumulativePercentage =

DIVIDE (

_CumulativeAmount,

_Total,

BLANK ( )

)


RETURN

_CumulativePercentage

通过使用前面的条件格式度量,我们将对销售额同比差距贡献最大的产品标记为红色。这个红色标签标识了值得更多关注的产品,因此用户可以首先关注它们。您可以通过调整标记的条件格式来调整此百分比阈值,使其更严格或更宽。


在此示例中,红色产品的影响最大,因此在视觉上为用户挑选出它们。这只是一个例子。您还可以使用更复杂的统计方法来标记兴趣点,例如使用降维技术(如 PCA 或 t-SNE)进行聚类。

格式化可以使用户更容易找到重要的数据点,并减少查看图表的时间。

示例 3:字段参数

要进一步增强散点图,可以使用字段参数。字段参数允许您动态选择维度或度量,并启用更灵活的视觉对象。例如,我们可以有一个字段参数,供用户选择他们想要查看散点图的方式,以及沿 X 轴和 Y 轴选择度量值。以下散点图显示了其外观的示例。


对于更高级的报表用户,这可能是在单个报表页中从不同角度浏览数据的有效方法。但是,您应该注意,只包含有意义的组合,以免使用户感到困惑。此外,字段参数是报告对象,请务必注意不要向语义模型添加太多内容,因为这会给开发人员和模型使用者带来混乱。

结论

在报表中,用户可以按需从高级概述转到详细信息,这一点很重要。散点图是帮助您执行此操作的一种可能方法。如果使用得当,散点图可以帮助用户识别可操作或有趣的数据点,特别是当与交互式报表中的其他高级技术(如交叉过滤、格式和字段参数)结合使用时。




如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。




长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~


客户案例

按行业 按部门

线上课程

课程直通 讲师介绍

官方微信

联系我们

北京

13811982114
agileex@agileex.com

北京市朝阳区博雅国际中心A座601

上海

13811982114
agileex@agileex.com

上海市静安区沪太路453号302室

Copyright © 2022 北京敏捷艾科数据技术有限公司agileex.com - 京ICP备16008845号-1