sankeyD3 › Реализация NodePosX в sankeyNetwork

Я использовал пакет sankeyD3 для создания SankeyNetworks, и функция «NodePosX» у меня пока не работает. Функция «NodePosX» не входит в пакет «networkD3», но находится в пакете «sankeyD3».

Чтобы проиллюстрировать проблему, с которой я столкнулся, я отредактировал пример из akraemer007, который был опубликован здесь, чтобы включить X-позиции узлов (см. ниже), но это все еще не работает так, как он изначально хотел, с ручным управлением x-позицией узла «Отказ».

Мы стремимся к чему-то подобному, но без небольшой линии от «Отключено» до «Активировано»:введите здесь описание изображения

library(devtools)
devtools::install_github("fbreitwieser/sankeyD3")
library(sankeyD3)
name <- c('Enrolled', 'Opted-Out', 'Invited', 'Activated')
xpos <- c(0, 1, 1, 2)
nodes <- data.frame(name, xpos)

source <- c(0, 0, 2, 1) 
target <- c(1, 2, 3, 3) 
value <- c(20, 80, 60, 0) 
links <- data.frame(source, target, value)
sankeyNetwork(Links = links, Nodes = nodes, Source = "source",
          Target = "target", Value = "value", NodeID = "name",NodePosX = "xpos",
          units = "TWh", fontSize = 12, nodeWidth = 30)

person Nevil    schedule 14.07.2018    source источник


Ответы (1)


Предполагая, что последняя строка в вашем фрейме данных links предназначена только для того, чтобы график выглядел так, как вы хотите, а не является частью фактических данных, которые вы хотите построить, вы можете добиться этого с помощью networkd3, используя параметр sinksRight = FALSE.

library(networkD3)

name <- c('Enrolled', 'Opted-Out', 'Invited', 'Activated')
xpos <- c(0, 1, 1, 2)
nodes <- data.frame(name, xpos)

source <- c(0, 0, 2)
target <- c(1, 2, 3)
value <- c(20, 80, 60)
links <- data.frame(source, target, value)

sankeyNetwork(Links = links, Nodes = nodes, Source = "source",
              Target = "target", Value = "value", NodeID = "name",
              units = "TWh", fontSize = 12, nodeWidth = 30, sinksRight = FALSE)

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

person CJ Yetman    schedule 14.07.2018
comment
Привет СиДжей. Спасибо за быстрое предложение. Следующий адаптированный код действительно дает то, что я хотел. - person Nevil; 15.07.2018
comment
Я только что обнаружил, что параметр sinnsRight = FALSE только останавливает дрейф узлов вправо. Я обнаружил, что это означает, что все узлы должны начинаться слева. У меня есть набор данных, для которых это не идеально. Поэтому я все еще хочу знать, почему опция NodePosX не работает так, как рекламируется в пакете sankeyD3. - person Nevil; 16.07.2018