Creating a horizontal bar chart in R to display sequence of activities

前端 未结 1 1749
南旧
南旧 2021-01-26 13:36

The dataset \"patients\" is an eventlog of patients visiting a clinic and getting treatment. The script below gives a data frame with traces or sequence of activities in the eve

相关标签:
1条回答
  • 2021-01-26 13:57

    Hope this helps (I am not able to get frequency however)

    library(splitstackshape)
    
    tr <- data.frame(traces(patients, output_traces = T, output_cases = F))
    tr.df <- cSplit(tr, "trace", ",")
    
    tr.df <- tr.df[,c(1,4:9)]
    tr.df <- melt(tr.df, id.vars = "trace_id")
    
    windows()
    ggplot(data = tr.df, aes(x = variable,y = trace_id, fill = value, label = 
    value)) + 
    geom_tile(colour = "white") + 
    geom_text(colour = "white", fontface = "bold", size = 2) +
    scale_fill_discrete(na.value="transparent") +
    theme(legend.position="none")
    

    EDIT 1:

    library(splitstackshape)
    library(bupaR)
    library(ggplot2)
    
    tr <- data.frame(traces(patients, output_traces = T, output_cases = F))
    tr.df <- cSplit(tr, "trace", ",")
    
    tr.df <- tr.df[,c(1,4:9)]
    tr.df <- melt(tr.df, id.vars = "trace_id")
    tr.df <- tr.df[order(tr.df$trace_id),]
    
    tr.label <- data.frame(id = tr$trace_id, freq = tr$absolute_frequency)
    tr.label <- tr.label[order(tr.label$id),]
    
    windows()
    ggplot(data = tr.df, aes(x = variable,y = trace_id, fill = value, label = value)) + 
    geom_tile(colour = "white") + 
    geom_text(colour = "white", fontface = "bold", size = 2) +
    scale_fill_discrete(na.value="transparent") +
    theme(legend.position="none") + 
    geom_text(data = tr.label, aes(label = freq, y = id, x = 6), nudge_x = 0.3,  
              colour = "black", fontface = "bold", inherit.aes = FALSE) 
    

    0 讨论(0)
提交回复
热议问题