From accf6b4ff0ac133e18b887a8a925800f3bc80667 Mon Sep 17 00:00:00 2001
From: robocopAlpha <deep@iMac.T5>
Date: Mon, 13 Jul 2020 18:15:59 +0300
Subject: [PATCH] Add ggplot theme generator

---
 DC_theme_generator.R | 129 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 129 insertions(+)
 create mode 100644 DC_theme_generator.R

diff --git a/DC_theme_generator.R b/DC_theme_generator.R
new file mode 100644
index 0000000..0bcfa73
--- /dev/null
+++ b/DC_theme_generator.R
@@ -0,0 +1,129 @@
+DC_theme_generator <- function(type,legend=T,ticks="out",x.axis.angle=0,hjust=0.5,vjust=0.5,fontsize.cex=1.5,fontfamily="serif"){
+  
+  ## Options:
+  # type: 'L', 'square'
+  # ticks: 'in', 'out'
+  # fontfamily: 'serif' , 'sans' , 'mono'
+  
+  ticks <- tolower(ticks)
+  fontfamily <- tolower(fontfamily)
+  
+  if( type == "square"){
+    if( legend ){
+      # Type: square , with legend"
+      themeToReturn <- ggplot2::theme(
+        panel.border = element_rect(linetype = 1, 
+                                    colour = "black",
+                                    fill=NA,
+                                    size=1),
+        panel.background=element_blank(),
+        panel.grid.major=element_line(color=NA),
+        axis.ticks = element_line(colour = "black"),
+        text = element_text(family = fontfamily),
+        axis.ticks.length = unit(ifelse(ticks=="in",-0.2,0.2),"cm"),
+        axis.title = element_text(size=rel(fontsize.cex)),
+        axis.text.y = element_text(size = rel(fontsize.cex),
+                                   hjust = 0.5,
+                                   angle = 0,
+                                   color="black",
+                                   margin=unit(c(0.3,0.3,0.3,0.3), "cm")),
+        axis.text.x = element_text(angle = x.axis.angle,
+                                   hjust = hjust,
+                                   vjust = vjust,
+                                   size = rel(fontsize.cex),
+                                   color="black",
+                                   margin=unit(c(0.3,0.3,0.3,0.3), "cm")),
+        legend.key= element_rect(fill=NA,
+                                 colour = NA)
+        )
+    }else{
+      # Type: square , without legend"
+      themeToReturn <- ggplot2::theme(
+        panel.border = element_rect(linetype = 1, 
+                                    colour = "black",
+                                    fill=NA,
+                                    size=1),
+        panel.background=element_blank(),
+        panel.grid.major=element_line(color=NA),
+        axis.ticks = element_line(colour = "black"),
+        text = element_text(family = fontfamily),
+        axis.ticks.length = unit(ifelse(ticks=="in",-0.2,0.2),"cm"),
+        axis.title = element_text(size=rel(fontsize.cex)),
+        axis.text.y = element_text(size = rel(fontsize.cex),
+                                   hjust = 0.5,
+                                   angle = 0,
+                                   color="black",
+                                   margin=unit(c(0.3,0.3,0.3,0.3), "cm")),
+        axis.text.x = element_text(angle = x.axis.angle,
+                                   hjust = hjust,
+                                   vjust = vjust,
+                                   size = rel(fontsize.cex),
+                                   color="black",
+                                   margin=unit(c(0.3,0.3,0.3,0.3), "cm")),
+        legend.key= element_rect(fill=NA,
+                                 colour = NA),
+        legend.position="none"
+      )
+    }
+  }
+  
+  if( type == 'L' ){
+    if( legend ){
+      # Type: L , with legend"
+      themeToReturn <- ggplot2::theme(
+        axis.line = element_line(colour = "black",
+                                 size=0.5),
+        panel.border = element_blank(),
+        panel.background = element_blank(),
+        panel.grid.major = element_blank(),
+        panel.grid.minor = element_blank(),
+        axis.ticks = element_line(colour = "black"),
+        text = element_text(family = fontfamily),
+        axis.ticks.length = unit(ifelse(ticks=="in",-0.2,0.2), "cm"),
+        axis.title = element_text(size=rel(fontsize.cex)),
+        axis.text.y = element_text(size = rel(fontsize.cex),
+                                   hjust = 0.5,
+                                   angle = 0,
+                                   color="black",
+                                   margin=unit(c(0.3,0.3,0.3,0.3), "cm")),
+        axis.text.x = element_text(angle = x.axis.angle,
+                                   hjust = hjust,
+                                   vjust = vjust,
+                                   size = rel(fontsize.cex),
+                                   color="black",
+                                   margin=unit(c(0.3,0.3,0.3,0.3), "cm")),
+        legend.key = element_rect(fill=NA,
+                                  colour = NA)
+      )
+    } else {
+      # Type: L , without legend
+      themeToReturn <- ggplot2::theme(
+        axis.line = element_line(colour = "black",
+                                 size=0.5),
+        panel.border = element_blank(),
+        panel.background = element_blank(),
+        panel.grid.major = element_blank(),
+        panel.grid.minor = element_blank(),
+        axis.ticks = element_line(colour = "black"),
+        text = element_text(family = fontfamily),
+        axis.ticks.length = unit(ifelse(ticks=="in",-0.2,0.2), "cm"),
+        axis.title = element_text(size=rel(fontsize.cex)),
+        axis.text.y = element_text(size = rel(fontsize.cex),
+                                   hjust=0.5,
+                                   angle=0,
+                                   color="black",
+                                   margin=unit(c(0.3,0.3,0.3,0.3), "cm")),
+        axis.text.x = element_text(angle = x.axis.angle,
+                                   hjust = hjust,
+                                   vjust = vjust,
+                                   size = rel(fontsize.cex),
+                                   color="black",
+                                   margin=unit(c(0.3,0.3,0.3,0.3), "cm")),
+        legend.key = element_rect(fill=NA,
+                                  colour = NA),
+        legend.position="none"
+      )
+    }  
+  }
+  return(themeToReturn)
+}
\ No newline at end of file
-- 
GitLab