1

我想在 R 中制作一个修改后的 sankey 图,其中节点之间可能有多个边,以识别不同的路径。有点难以解释,所以我在 ppt 中制作了示例图片 :)

在此处输入图像描述

我知道这很丑:) 但我的意思是我希望能够在 A 和 B1 之间建立边缘,并清楚地指出哪条边缘属于通往 C1 和 C2 的路径。

我尝试了 rCharts-packages 中的 sankeyPlot,但是我只能得到两列节点。

我也尝试过河图包,但在这里我不能在相同节点之间制作两条边。

4

1 回答 1

2

您可以将 DiagrammeR 与 graphviz 图形和 HTML 表格标签一起使用:

library(DiagrammeR)

g1 <- 
'digraph structs {
    B1_node [label=<
      <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
        <TR><TD PORT="One">B One</TD></TR>
        <TR><TD PORT="Two">B Two</TD></TR>
      </TABLE>
      > ];

    A -> B1_node:One;
    A -> B1_node:Two;
    A -> B2;
    B1_node:One -> C1;
    B1_node:Two -> C2;
    B2 -> C3;

    rankdir=LR
}'

grViz(g1)

在此处输入图像描述

请参阅DiagrammeR/graphvizgraphviz/node 形状文档。

桑基版

您可以使用桑基图,但必须拆分节点 B1:

links <- data.frame(
  source = c("A", "A", "B1",   "B1", "A",    "B1a", "B1b", "B2" ),
  target =c("B1", "B1", "B1a", "B1b", "B2",  "C1", "C2", "C3"),
  value = c(20, 20, 20, 20, 30, 20, 20, 30)
)

在此处输入图像描述

于 2015-10-03T09:35:44.150 回答