修改的sankey在节点之间有多个边的绘图

时间:2015-10-03 08:45:20

标签: r network-programming flowchart sankey-diagram riverplot

我想在R中修改一个sankey图,在这里可以在节点之间有几条边,以识别不同的路径。这有点难以解释所以我在ppt中制作了样本图片:)

"economy size" SVD

我知道它很难看:)但我的观点是我希望能够在A和B1之间产生边缘,并清楚地指出哪条边缘属于通往C1和C2的路径。

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

我也试过了riverplot-packages,但是在这里我不能在同一个节点之间做两条边。

1 个答案:

答案 0 :(得分: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)

enter image description here

请参阅DiagrammeR/graphvizgraphviz/node shapes文档。

Sankey版

您可以使用Sankey图,但必须拆分节点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)
)

enter image description here