# install.packages("remotes")
# remotes::install_github("davidsjoberg/ggsankey")
library(ggsankey)
#dim(mtcars)
# install.packages("ggplot2")
library(ggplot2)
library(ggprism)
# install.packages("dplyr")
library(dplyr) # Also needed
## Warning: 程辑包'dplyr'是用R版本4.1.3 来建造的
## 
## 载入程辑包:'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
df1 <- mtcars[1:5,c(2,8,9)]
df1$vs <- 1
df1 <- df1[df1$cyl != 4, ]
df1$cyl[df1$cyl == 8] <- 1
df1$vs[1] <- df1$am[1] <- NA
df1
##                   cyl vs am
## Mazda RX4           6 NA NA
## Mazda RX4 Wag       6  1  1
## Hornet 4 Drive      6  1  0
## Hornet Sportabout   1  1  0
#df1$vs <- NULL

df <- df1 %>%
  make_long(cyl,vs, am)
p1 <- ggplot(df, aes(x = x, 
               next_x = next_x, 
               node = node, 
               next_node = next_node,
               fill = factor(node),
               label = node)) +
  geom_sankey(smooth = 6,width = 0.03, type = "sankey",
              flow.alpha = 0.5, node.color = NA,
              space = 0, show.legend = T, 
              color = "red") +
  #theme_sankey(base_size = 16) +
  #scale_fill_viridis_d(option = "D") +
  geom_sankey_label(size = 5, color = 0, fill = NA, show.legend =F) +
  guides(fill = guide_legend(title = "Title")) +
  geom_sankey_text(size = 10, color = NA) + 
  scale_y_continuous(limits = c(-2,2),labels = seq(1,5,1)) +
  scale_x_discrete(expand = c(0,0)) +
  labs(x = NULL,y = "Number of compounds") +
  scale_fill_brewer(palette = "Pastel2")  
  p1
## Warning: Removed 2 rows containing missing values (geom_label).
## Warning: Removed 2 rows containing missing values (geom_text).

p1 +  theme_prism(base_size = 14) +
  theme(legend.position = c(1.1,0.8),
        legend.direction = "vertical",
        legend.spacing.x = unit(0.1, 'cm'),
        #legend.spacing.y = unit(0.2, 'cm'),
        legend.title.align = 0,
        legend.key.size = unit(.5, "cm"),
        legend.text = element_text(colour="black", size=18, 
                                   face="plain"),
        legend.title = element_text(colour="black", size=18, 
                                    face="plain"),
        legend.background = element_blank(),
        legend.key = element_rect(colour = NA, fill = NA),
        #legend.key.height=unit(0.5,"line"),
        #legend.key.width=unit(0.7,"line"),
        #legend.margin=margin(5,5,5,5),
        #legend.justification = c(0.5, 0.7),
        #legend.box.margin=margin(0,0,0,0),
        panel.background = element_blank(),
        panel.border = element_rect(colour = NA, fill=NA, size=1),
        axis.line = element_line(size = 0.5, color = "black"),
        panel.grid = element_blank(),
        plot.margin = unit(c(0,2,0,0), "cm"),
        axis.text.x   = element_text(size= 18, color = "black",family = "sans",hjust = 0.5, angle = 0),
        axis.text.y   = element_text(size= 18, color = "black",family = "sans",vjust = 0.5,hjust =1),
        axis.title  = element_text(size=18, color = "black",family = "sans",face = "bold"),
        axis.ticks =  element_line(size= 0.5),
        axis.ticks.length = unit(3, "pt")) 
## Warning: Removed 2 rows containing missing values (geom_label).
## Removed 2 rows containing missing values (geom_text).

################output
ggsave(paste0(Sys.Date(),"-sankey_plot.tiff"), plot = last_plot(), 
       device = "tiff", path = NULL,
       scale = 1, width = 35, height = 15, units ="cm",dpi = 300, limitsize = TRUE)
## Warning: Removed 2 rows containing missing values (geom_label).
## Removed 2 rows containing missing values (geom_text).
#https://r-charts.com/flow/sankey-diagram-ggplot2/
#https://bids.github.io/colormap/