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


15

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

这里是一个热平衡图的一个很好的例子乔治·怀特塞兹和乔治·W·克拉布特里不要忘记长期的能源基础研究 来源; 不要忘记能源,科学的长期基础研究 2007年2月9日:第一卷。315.没有 5813,第796-798页。

意识到没有Sankey R-package之后,我在网上找到了R脚本,但不幸的是,该脚本相当原始并且有些局限。寄予厚望的我在stackoverflow上要求使用Sankey R-package或更成熟的功能,但令我惊讶的是,由于我们没有在R中构建Sankey Diagrams的成熟功能。

在我发布赏金之后,Geek On Acid足够好,可以建议对现有脚本进行一些小小的改动,使其可以或多或少地用于我的特定目的。

改进的R脚本生成了该图, Geek On Acid的R-Sankey图 Source;stackoverflow.com

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

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


7
要使该图以任何自动化方式看起来都非常困难(第一个示例很可能是由艺术家手动放置节点完成的)。难以编程与其作为图形工具的实用性无关。您可能会在GIS网站的此职位上找到有关可视化流程的更多动机。另外,我在此站点的答案中提供了一些parset和点图的示例。
Andy W

@AndyW,谢谢您的非常有用的评论。我将研究不同的方法并用我的数据进行实验。谢谢。
埃里克失败

上面的图是个好主意,但在我看来,源的总和不等于汇的总和(假设高度描述了幅度)
naught101

嗯..没关系,我读错了...源中的较浅部分只是标签,而不是数据的一部分。有点困惑..
naught101

Answers:


4

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

现在,对于您发布的损耗示例,正如其他人指出的那样,使用Sankey图无济于事。我想,如果您想对替代可视化提出好的建议,则需要发布完整的变量集。如果您只是想显示站点和临床医生之间的损耗来源的差异,则一小部分点状图可能最容易让听众理解和实施(请参见本示例,在这种情况下,组可能是这些部位中,组内的元素将是损耗的原因,水平轴将为0-100%)。

如果Sankey图是您要使用的东西,并且您愿意涉猎另一种高级语言,那么图库中有一个不错的示例(带有代码),用于Python绘图包matplotlib。


3

我不一定会假设缺少方法就意味着该方法不重要或没有用。毕竟,对于R中当前存在的所有方法,都有一段时间(很可能是最近的-R仅约10年之久)没有用于它的软件包。

但是,我应该认为有许多方法可以显示数据,例如损耗。我首先想到的是查看您的图表,它可以用点图表示。也存在其他可能性。Sankey图的额外功能将在您由于某一原因而导致某种程度的损耗而发挥作用,然后由于相同的原因而导致更多损耗时,稍后再使用其他输入和输出。用标准图表示起来会更加复杂(即使使用Sankey图也很难遵循它-例如,页面顶部的图需要大量工作才能阅读)。由于您似乎没有,所以Sankey图看起来很漂亮,但是太过分了。


1
给出的第一个图形是很棒的IMO。它具有很多细节,很难在一系列点图中如此直观地捕获。Sankey图还可以很好地可视化流入流出不同节点的流量(重新组合为使用的能量和损失的能量)。
Andy W

@AndyW,我不是要敲这个数字。大量阅读b / c包含很多信息,这是很多工作。它吸引了您并在其中停留了一段时间可能是真正的加分-我并不是说我的描述会被否定。OTOH,OP的数据非常直接,以至于更简单的绘图可以传达它们。
gung-恢复莫妮卡

好的一点,如果OP的数据不比给定的复杂,那可能比它值得的麻烦更多!我什至不想考虑将原始能量图转换为一系列点图。
安迪W

@gung,谢谢您回复我的帖子。我同意,不应将缺乏方法视为该方法不好或没有用的明确标志,而且我绝对没有在Sankey图(SD)上给出任何操作。关于我的数据,您在图表中看到的只是我数据的最大维度,我在4个不同的地点以及7个不同的临床医生那里收集了数据,我希望将此信息包括在我的绘图中,例如某种在整体流程中细分。使用当前数据可能看起来有些过时了,但是我相信如果我包含所有变量,SD将会很有用。
埃里克·菲尔

带有更高的复杂性,Sankey图可能是您最好的选择。同样值得您花时间浏览@AndyW的一些帖子,例如上面的链接。他给了很多可能相关的好答案。例如,如果单击他的名字导航到他的页面,然后单击那里的数据可视化标签,则可以浏览他的帖子。
gung-恢复莫妮卡

1

如何使用R代码编写根据您的数据设置的箭头宽度和简单布局的SVG文件。然后将其加载到Inkscape中并弯曲箭头,在您的心脏内容中添加标签等,以使某些内容变得漂亮。

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

但老实说,如果顶部的乱七八糟的花样乱七八糟是一个好的Sankey图,我不希望看到一个饱肚子的坏人[尽管凝视了几分钟又给了我一个线索它是关于什么的,一个好的图形就不需要它]。


2
我希望看到一种可视化该数据的更好方法。该图中有很多信息(以及多个不同的变量),所以当然会很复杂……
naught101 '04

2
丹·卡尔(Dan Carr)的微地图会花费一些时间来消化完整的图形,任何详细的路线图也是如此。两者都不是一件坏事。请参阅James Chesire的博客文章“ 快速思考和慢速思维可视化”
Andy W
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.