ggplot_themes/DC_theme_generator.R
dchakro 3a22985ed4 Titles Formatting
- Axis title always bold
- only apply font face to x and y axis titles, and not every text as it was earlier.
2020-08-25 17:35:46 +03:00

175 lines
8 KiB
R

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", ax.fontstyle="bold.italic"){
# # Generate themes for ggplot2
# # Author: Deepankar Chakroborty
# # Available at: https://github.com/dchakro/ggplot_themes
# # Report issues: https://github.com/dchakro/ggplot_themes/issues
## Options:
# type: 'L', 'square'
# ticks: 'in', 'out'
# fontfamily: 'serif' , 'sans' , 'mono'
# ax.fontstyle = 'plain', 'italic', 'bold', 'bold.italic'
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),
plot.title = element_text(family = fontfamily,
face="bold",
color = "black",
size = rel(fontsize.cex)),
axis.ticks.length = unit(ifelse(ticks=="in",-0.2,0.2),"cm"),
axis.title = element_text(family = fontfamily,
face = ax.fontstyle,
size=rel(fontsize.cex)),
axis.text.y = element_text(family = fontfamily,
face = "plain",
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(family = fontfamily,
face = "plain",
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),
plot.title = element_text(family = fontfamily,
face="bold",
color = "black",
size = rel(fontsize.cex)),
axis.ticks.length = unit(ifelse(ticks=="in",-0.2,0.2),"cm"),
axis.title = element_text(family = fontfamily,
face = ax.fontstyle,
size=rel(fontsize.cex)),
axis.text.y = element_text(family = fontfamily,
face = "plain",
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(family = fontfamily,
face = "plain",
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),
plot.title = element_text(family = fontfamily,
face="bold",
color = "black",
size = rel(fontsize.cex)),
axis.ticks.length = unit(ifelse(ticks=="in",-0.2,0.2), "cm"),
axis.title = element_text(family = fontfamily,
face = ax.fontstyle,
size=rel(fontsize.cex)),
axis.text.y = element_text(family = fontfamily,
face = "plain",
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(family = fontfamily,
face = "plain",
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),
plot.title = element_text(family = fontfamily,
face="bold",
color = "black",
size = rel(fontsize.cex)),
axis.ticks.length = unit(ifelse(ticks=="in",-0.2,0.2), "cm"),
axis.title = element_text(family = fontfamily,
face = ax.fontstyle,
size=rel(fontsize.cex)),
axis.text.y = element_text(family = fontfamily,
face = "plain",
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(family = fontfamily,
face = "plain",
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)
}