使用 R 可视化损耗的最佳方法?

机器算法验证 r 数据可视化 桑基图
2022-02-11 14:39:26

通过这个站点,我最近发现了 Sankey Diagrams,这是一种可视化传统流程图中正在发生的事情的好方法。

这是George M. Whitesides 和 George W. Crabtree的一个很好的桑基图示例, 不要忘记能源的长期基础研究 来源;不要忘记能源的长期基础研究,科学,2007 年 2 月 9 日:卷。315. 不。5813,第 796 - 798 页。

在我意识到没有 Sankey R-package 后,我在网上找到了一个 R 脚本,不幸的是,这个脚本非常原始并且有些受限。寄予厚望,我在 stackoverflow 上要求提供 Sankey R 包或更成熟的功能,但令我惊讶的是,似乎我们没有在 R 中构建 Sankey Diagrams 的成熟功能。

在我发布了一个赏金Geek On Acid之后,他非常友好地建议对现有脚本进行一些小改动,使其或多或少地适用于我的特定目的。

改进后的 R 脚本产生了这个图表, Geek On Acid 的 R-Sankey 图 Source;stackoverflow.com

但是,缺少 R 包是否表明 Sankey Diagrams 并不是一种在数据流中使用 R 可视化损耗的惊人方式,就像上图中所示的那样(请参阅有关数据和 R 代码的初始 stackoverflow 问题。也许有一种更好的方式来可视化损耗。

您认为使用 R 在数据流中可视化损耗的最佳方法是什么?

3个回答

我同意@gung。我认为您发布的桑基图是该技术可以提供帮助的一个很好的例子。虽然它很复杂,但上下文(能量输入和输出)也很复杂,很难想出更好的方法来可视化跨多个使用类别的输入到输出的路径作为新输入。

现在,对于您发布的损耗示例,正如其他人所指出的,使用桑基图没有帮助。我认为如果你想要一个关于替代可视化的好的建议,你需要发布你的全套变量。如果您只是想显示站点和临床医生之间流失来源的差异,则小倍数系列的点图可能是您的受众最容易理解和实施的(参见此示例,在您的情况下,组可能是站点,组内的元素将是损耗的原因,横轴为 0-100%)。

如果桑基图是您想要使用的东西,并且您愿意涉足另一种高级语言,那么 Python 绘图包 matplotlib 的图库中有一个很好的示例(带有代码)

我不一定认为缺少方法意味着方法不重要或无用。毕竟,对于 R 中当前存在的所有方法,曾经有一段时间(很可能是最近的——R 才大约 10 年)没有包。

但是,我应该认为有很多方法可以可视化数据,例如减员。看到你的图表,我的第一个想法是它可以用点图表示。也存在其他可能性。桑基图的额外功能将发挥作用,当您在某一时刻由于特定原因而出现一些损耗,然后由于相同的原因而在两者之间有其他输入和输出时更多。用标准图表示会更复杂(即使使用桑基图也更难理解——例如,页面顶部的图需要大量的工作才能阅读)。既然你似乎没有,桑基图似乎很漂亮,但有点矫枉过正。

如何使用 R 代码编写一个 SVG 文件,并根据您的数据设置箭头宽度和一个简单的布局。然后加载到 Inkscape 并弯曲箭头,将标签等添加到您心中的内容中,以制作漂亮的东西。

明显的问题:如果您的数据发生变化,您需要在 Inkscape 中重做所有美化(尽管您可能可以使用 Inkscape 中漂亮的 SVG 作为模板,只需在其中替换新的箭头宽度)。

但老实说,如果顶部那乱七八糟的乱七八糟的曲线是一个很好的桑基图,我不想看到一个饱腹的坏图[尽管再盯着它几分钟给了我一个关于它是关于什么的,一个好的图形不应该需要那个]。