Модифицированный участок sankey с несколькими ребрами между узлами

Я хотел бы сделать модифицированный график Санки в R, где можно иметь несколько ребер между узлами, чтобы идентифицировать разные пути. Это немного сложно объяснить, поэтому я сделал образец изображения в ppt:)

введите описание изображения здесь

Я знаю, что это некрасиво:), но я хочу сказать, что я хотел бы быть в состоянии сделать ребра между A и B1 и четко указать, какое ребро принадлежит пути, идущему к C1 и C2.

Я попробовал sankeyPlot из rCharts-пакетов, однако смог получить только два столбца узлов.

Я также попробовал riverplot-пакеты, но здесь я не могу сделать два ребра между одинаковыми узлами.

1 ответ

Решение

Вы можете использовать DiagrammeR с графом графиков и надписями таблиц 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 / graphviz и graphviz/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)
)

Другие вопросы по тегам