# Install and load necessary packages
if (!requireNamespace("ggvenn", quietly = TRUE)) {
  install.packages("ggvenn")
}
library(ggvenn)
## Warning: package 'ggvenn' was built under R version 4.4.1
## Loading required package: dplyr
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
## Loading required package: grid
## Loading required package: ggplot2
library(ggplot2)

# Create sample data
set1 <- c("Gene1", "Gene2", "Gene3", "Gene4", "Gene5", "Gene6")
set2 <- c("Gene2", "Gene3", "Gene4", "Gene7", "Gene8")
set3 <- c("Gene3", "Gene4", "Gene5", "Gene9", "Gene10")
set4 <- c("Gene4", "Gene5", "Gene6", "Gene11", "Gene12")

# Combine data into a list
data <- list(Set1 = set1, Set2 = set2, Set3 = set3, Set4 = set4)

# Define deepened custom fill colors
deepened_fill_colors <- c("#8FC7A5", "#FAA474", "#9DAFD1", "#E790C0")

# Define label colors (you can adjust these as needed)
label_colors <- c("#006400", "#8B4513", "#00008B", "#8B008B")  # Dark versions of the fill colors

# Create Venn diagram
venn_plot <- ggvenn(
  data,
  fill_color = deepened_fill_colors,
  stroke_color = "red",  # Set custom stroke colors
  stroke_size = 1,               # Increased stroke size for better visibility
  set_name_size = 5,             # Set font size for set names
  text_size = 5,                 # Set font size for intersection counts
  fill_alpha = 0.5,              # Set transparency for fill colors
  text_color = "black",          # Set color for intersection counts
  set_name_color = label_colors  # Set colors for set name labels
)
# Customize the plot
venn_plot <- venn_plot +
  theme(plot.background = element_rect(fill = "white", color = NA)) +  # Set green background
  labs(title = "Gene Set Overlap") +  # Add title
  theme(plot.title = element_text(hjust = 0.5, size = 16, color = "red"))  # Center-align title, set size and color

# Display the plot
print(venn_plot)

# If you want to save the plot, you can use the following code:
# ggsave("venn_diagram.png", venn_plot, width = 10, height = 8, dpi = 300)