Sankey percelen


Sankey plots worden vaak gebruikt om stromen te illustreren, bijvoorbeeld behandelingsveranderingen in de geneeskunde. De bovenstaande plot illustreert de veranderingen in behandeling bij astmapatiënten. Enkele kleine stromen zijn weggelaten.

Dankzij het network3D pakket is het leuk geworden om sankey plots te maken! Door het implementeren van java scripts kunnen ze interactief zijn.

Er zijn echter enkele valkuilen bij het gebruik van dit pakket. De belangrijkste is het veranderen van de kleuren van plot naar plot. We moeten ze doorgeven via de functie d3.scaleOrdinal() en zorgen voor de ontbrekende kleuren. U kunt de volgende code gebruiken:


colors.list<-c("#FFC312","#C4E538","#12CBC4","#FDA7DF","#ED4C67",
    "#F79F1F","#A3CB38","#1289A7","#D980FA","#B53471",
    "#EE5A24","#009432","#0652DD","#9980FA","#833471",
    "#EA2027","#006266","#1B1464","#5758BB","#6F1E51",
    "#747d8c")
  
  ##definieer 21 van types voor kleuren
  types.list<-c("type 0", "type 1", "type 2", "type 3",
                "type 4", "type 5 ", "type 6 ", "type 7", "type 8 ", "type 9",
                "type 10", "type 11", "type 12", "type 13", "type 14", "type 15",
                "type 16", "type 17", "type 18", "type 19", "type 20")
  
  
  colors <- paste(colors.list[which.not.missing], collapse = '", "')
  types <- paste(types.lijst[welke.niet.ontbrekend], collapse = '", "')
  ##prepareer kleuren naar JS-vorm in sankeyNetwork-functie
  colorJS <- paste('d3.scaleOrdinal() .domain(["', types, '"]).range(["', colors, '"])')

Geef het dan door via sankeyNetwork:

sankeyNetwork(Links = links, Nodes = nodes,
Bron = "bron", Doel = "doel",
Waarde = "waarde", NodeID = "naam",
fontSize= 12, nodeWidth = 10,
colourScale=colorJS,NodeGroup="groep",
LinkGroup="groep")

Het is een leuk en zeer handig idee om de multistate models aanpak te combineren om de stromen van belang te creëren (zie etm pakket in R!).

library(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)
  
  #1TP3Nu berekenen we de waarschijnlijkheden van start- tot stoptijd
  probst<-summary(tr.prob.st)
  probst<-do.call(rbind,probst)
  for.plot<-probst[probst$time==stop,]
  ##Nu kunnen we links maken voor sankey plot
  links.st<rond(for.plot$P*100,digits=0)

Aangezien de uitkomst sankey plot een widget is, kunt u deze opslaan met de volgende code:

p<-sankeyNetwork(Links = links, Nodes = nodes,
                Bron = "bron", Doel = "doel",
                Waarde = "waarde", NodeID = "naam",
                fontSize= 12, nodeWidth = 10,
                colourScale=my_color,NodeGroup="groep",
                LinkGroup="groep")
saveWidget(p, pat, selfcontained = F, libdir = "lib")

Selfcontained=F zal het opslaan in de bibliotheek samen met de afhankelijke java scripts. U kunt de Self-contained=T optie kiezen en dan zal het script worden opgenomen in het resulterende html bestand.

Helaas is er geen automatische manier om getallen naast de knooppuntnamen te krijgen. Daarom moet je een truc gebruiken en de getallen plakken als deel van de knooppuntnaam met de functie paste().

Het volgende leuke aan het network3D pakket is dat het gemakkelijk kan worden geïmplementeerd in Shiny, zodat je je eigen dashboard kunt hebben voor het maken van sankey plots.

Als je hulp nodig hebt, laat het me weten in de commentaren!

Veel plezier!

Dit bericht is geplaatst in Blog. Maak een bladwijzer van de permalink .

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *


nl_NLDutch