Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Beautifying Sankey/Alluvial visualization using R

I'm currently using Alluvial package in R to create a visualization.

Here is my data set:

https://app.box.com/s/6qju42u0cg1cmrnhyhyzmjtp59wnsn3q

Here is my code:

alluvial(fb_ad_3d[,2:3], freq=fb_ad_3d$freq,
         col = ifelse( fb_ad_3d$Response == "Yes", "skyblue1", 
                       "darkorchid1" ),xw = 0.2,alpha = 0.6,
                        gap.width=0.2,cex = 1.1, cex.axis = 1.5)

Here is the visualization:

enter image description here

There are two thing I really don't like:

  1. The zigzag patterns on the edges of the flow connectors

  2. Certain categories (Agriculture, Events, Electronics, Telecom) on the left side have been compressed making them ineligible.

Any way to improve this visualization and make it beautiful?

like image 699
user709413 Avatar asked May 17 '18 15:05

user709413


1 Answers

Tried out ggalluvial package. The result is much better.

Here is the code:

A_col <- "firebrick3"
B_col <- "darkorange"
C_col <- "deepskyblue3"
alpha <- 0.7

ggplot(fb_ad_3d,
       aes(weight = freq, axis1 = Category, axis2 = Response)) +
  geom_alluvium(aes(fill = Response, color = Response), 
                width = 1/12, alpha = alpha, knot.pos = 0.4) +
  geom_stratum(width = 1/6, color = "grey") +
  geom_label(stat = "stratum", label.strata = TRUE) +
  scale_x_continuous(breaks = 1:2, labels = c("Category", "Response"))     +
  scale_fill_manual(values  = c(A_col, B_col, C_col)) +
  scale_color_manual(values = c(A_col, B_col, C_col)) +
  ggtitle("Relevance of Facebook Custom List Advertising") +
  theme_minimal() +
  theme(
   axis.text.x = element_text(size = 12, face = "bold")
  )

Here is the visualization:

enter image description here

like image 120
user709413 Avatar answered Nov 13 '22 00:11

user709413