# 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/