Санкционные участки


Графики Санки часто используются для иллюстрации потоков, например, изменений в лечении в медицине. Приведенный выше график иллюстрирует изменения в лечении пациентов с астмой. Некоторые небольшие потоки пропущены.

Благодаря пакету network3D создание санки-графиков стало увлекательным занятием! С помощью java-скриптов они могут быть интерактивными.

Однако при использовании этого пакета есть некоторые ловушки. Главная из них - изменение цветов от графика к графику. Нам нужно передать их через функцию d3.scaleOrdinal() и позаботиться о недостающих. Вы можете использовать следующий код:


colors.list<-c("#FFC312","#C4E538","#12CBC4","#FDA7DF","#ED4C67",
    "#F79F1F","#A3CB38","#1289A7","#D980FA","#B53471",
    "#EE5A24","#009432","#0652DD","#9980FA","#833471",
    "#EA2027","#006266","#1B1464","#5758BB","#6F1E51",
    "#747d8c")
  
  ##define 21 тип для цветов
  types.list<-c("тип 0", "тип 1", "тип 2", "тип 3",
                "тип 4", "тип 5", "тип 6", "тип 7", "тип 8", "тип 9",
                "тип 10", "тип 11", "тип 12", "тип 13", "тип 14", "тип 15",
                "тип 16", "тип 17", "тип 18", "тип 19", "тип 20")
  
  
  colors <- paste(colors.list[which.not.missing], collapse = '", "')
  types <- paste(types.list[which.not.missing], collapse = '", "')
  ##подготовка цветов к JS форме в функции sankeyNetwork
  colorJS <- paste('d3.scaleOrdinal() .domain(["', types, '"]).range(["', colors, '"])')

Затем передайте его через sankeyNetwork:

sankeyNetwork(Links = links, Nodes = nodes,
Source = "источник", Target = "цель",
Value = "значение", NodeID = "имя",
fontSize = 12, nodeWidth = 10,
colorScale=colorJS,NodeGroup="group",
LinkGroup = "группа")

Это хорошая и очень удобная идея - объединить подход многособытийных моделей для создания интересующих потоков (см. пакет etm в R!).

библиотека(etm)
  tr.prob.st 0,], c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22"), tra, s=start,t=stop,cens.name = NULL)
  
  #1TP3Теперь рассчитаем вероятности от времени начала до времени остановки
  probst<-summary(tr.prob.st)
  probst<-do.call(rbind,probst)
  for.plot<-probst[probst$time==stop,]
  ## Теперь мы можем сделать ссылки для графика Санки
  links.st<-round(for.plot$P*100,digits=0)

Так как график санки исхода является виджетом, вы можете сохранить его с помощью следующего кода:

p<-sankeyNetwork(Links = links, Nodes = nodes,
                Source = "источник", Target = "цель",
                Value = "значение", NodeID = "имя",
                fontSize = 12, nodeWidth = 10,
                colorScale=my_color,NodeGroup="group",
                LinkGroup = "группа")
saveWidget(p, pat, selfcontained = F, libdir = "lib")

Selfcontained=F сохранит его в библиотеке вместе с зависимыми java-скриптами. Вы можете выбрать опцию Self-contained=T, и тогда скрипт будет включен в результирующий html-файл.

К сожалению, не существует автоматического способа получения чисел рядом с именами узлов. Поэтому необходимо прибегнуть к хитрости и вставить цифры как часть имени узла с помощью функции paste().

Следующей приятной особенностью пакета network3D является то, что он может быть легко реализован в Shiny, так что у вас может быть своя собственная панель для создания графиков sankey.

Если вам нужна помощь, напишите мне в комментариях!

Веселитесь!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


ru_RURussian