# Original code by Max Gordon
# Source: http://gforge.se/2013/06/visualizing-transitions-with-the-transitionplot-function/
# Create the transition matrix
library(Gmisc)
library(grid)
library(RColorBrewer)
set.seed(9730)
b4 <- sample(1:3, replace = TRUE, size = 500, prob = c(0.1, 0.4, 0.5))
after <- sample(1:3, replace = TRUE, size = 500, prob = c(0.3, 0.5, 0.2))
b4 <- factor(b4, labels = c("None", "Moderate", "Major"))
after <- factor(after, labels = c("None", "Moderate", "Major"))
# Create the transition matrix
transition_mtrx <- table(b4, after)
# SVG output
svg(filename = "transitionPlot.svg",width = 8, height = 10.64)
transitionPlot(transition_mtrx, 
               box_prop = cbind(c(0.3, 0.7, 0.5), c(0.5, 0.5, 0.4)), 
               txt_start_clr = c("black", "white"), 
               txt_end_clr = c("black", "white"), 
               fill_start_box = brewer.pal(n = 3, name = "Paired")[1:2], 
               fill_end_box = brewer.pal(n = 3, name = "Paired")[1:2], 
               overlap_add_width = 1.3, type_of_arrow = "gradient", 
               min_lwd = unit(1, "mm"), max_lwd = unit(20, "mm"))
dev.off()
# PNG output
png("transitionPlot.png",width = 800, height = 1064)
transitionPlot(transition_mtrx, 
               box_prop = cbind(c(0.3, 0.7, 0.5), c(0.5, 0.5, 0.4)), 
               txt_start_clr = c("black", "white"), 
               txt_end_clr = c("black", "white"), 
               fill_start_box = brewer.pal(n = 3, name = "Paired")[1:2], 
               fill_end_box = brewer.pal(n = 3, name = "Paired")[1:2], 
               overlap_add_width = 1.3, type_of_arrow = "gradient", 
               min_lwd = unit(1, "mm"), max_lwd = unit(20, "mm"))
dev.off()