Data Analytics – GGPLOT THEME BACKGROUND COLOR AND GRIDS

GGPLOT THEME BACKGROUND COLOR AND GRIDS

 

This article shows how to change a ggplot theme background color and grid lines.

The default theme of a ggplot2 graph has a grey background color. You can easily and quickly change this to a white background color by using the theme functions, such as theme_bw()theme_classic()theme_minimal() or theme_light() (See ggplot2 themes gallery).

Another alternative is to modify directly the arguments panel.background and panel.grid in the function theme().

In this R graphics tutorial, you will learn how to:

  • Change a ggplot background color using a custom color, say lightblue.
  • Remove the default ggplot grey background and replace it with a blank background color.
  • Remove panel border and background grid lines (minor and major grids).
  • Create and save a ggplot with transparent background (i.e., a ggplot with no background).
  • Create a ggplot with dark / black background color.

 

Contents:

  • Key gglot2 R functions
  • Create a basic ggplot
  • Change background color and grid lines
  • Remove panel border and background grid lines
  • Remove grey background color
  • Make a ggplot with transparent background
  • Create a ggplot with black background
  • Conclusion

 

Key gglot2 R functions

Key ggplot2 theme options to modify the plot panel and background:

theme(
  
  plot.background = element_rect(),    # Background of the entire plot
  
  panel.background = element_rect(),   # Background of plotting area
  panel.border = element_rect(),       # Border around plotting area.
                                       # fill argument should be NA
  
  panel.grid = element_line(),         # All grid lines
  panel.grid.major = element_line(),   # Major grid lines
  panel.grid.minor = element_line(),   # Minor grid lines
  
  panel.grid.major.x = element_line(), # Vertical major grid lines
  panel.grid.major.y = element_line(), # Horizontal major grid lines
  panel.grid.minor.x = element_line(), # Vertical minor grid lines
  panel.grid.minor.y = element_line()  # Vertical major grid lines
)

Arguments of the helper functons:

  • element_line(color, size, linetype). Modify grid lines color size and type.
  • element_rect(fill, color, size, linetype). Modfify a rectangle element background fill, as well as, the border color, size and linetype.

 

To remove a particular panel grid, use element_blank() for the corresponding theme argument. For example to remove the major grid lines for the x axis, use this: p + theme(panel.grid.major.x = element_blank()).

Create a basic ggplot

library(ggplot2)
p <- ggplot(ToothGrowth, aes(factor(dose), len)) +
  geom_boxplot()
p

Change background color and grid lines

  1. Change the panel background color
  2. Change the plot background color

 


# 1. Change plot panel background color to lightblue
# and the color of major/grid lines to white
p + theme(
  panel.background = element_rect(fill = "#BFD5E3", colour = "#6D9EC1",
                                size = 2, linetype = "solid"),
  panel.grid.major = element_line(size = 0.5, linetype = 'solid',
                                colour = "white"), 
  panel.grid.minor = element_line(size = 0.25, linetype = 'solid',
                                colour = "white")
  )

# 2. Change the plot background color (not the panel)
p + theme(plot.background = element_rect(fill = "#BFD5E3"))

Remove panel border and background grid lines

R function to hide plot panel borders and gridlines: element_blank().

p + theme(
  # Hide panel borders and remove grid lines
  panel.border = element_blank(),
  panel.grid.major = element_blank(),
  panel.grid.minor = element_blank(),
  # Change axis line
  axis.line = element_line(colour = "black")
  )

Remove grey background color

  • Solution 1: Use the theme functions to get rid of the grey background (@ref(ggplot-themes-gallery).
p + theme_bw()  # Black and white theme

p + theme_classic() # Classic theme

  • Solution 2: Create, step-by-step, a ggplot with white background:
p + theme(
  # Remove panel border
  panel.border = element_blank(),  
  # Remove panel grid lines
  panel.grid.major = element_blank(),
  panel.grid.minor = element_blank(),
  # Remove panel background
  panel.background = element_blank(),
  # Add axis line
  axis.line = element_line(colour = "grey")
  )

Make a ggplot with transparent background

In this section you will learn how to make and save a ggplot with transparent background.

  • Solution 1: Use the function theme_transparent() [in ggpubr package]. First, install it with install.packages("ggpubr"), then type this:
transparent.plot <- p + ggpubr::theme_transparent()
ggsave(filename = "transparent-background.png",
       plot = transparent.plot,
       bg = "transparent", 
       width = 2, height = 1.5, units = "in")

Transparent background color

  • Solution 2: Make a transparent background by starting from theme_void():
p + theme_void() + # Empty theme without axis lines and texts
  theme(
    panel.background = element_rect(fill = "transparent", colour = NA),
    plot.background = element_rect(fill = "transparent", colour = NA),
    legend.background = element_rect(fill = "transparent", colour = NA),
    legend.box.background = element_rect(fill = "transparent", colour = NA)
  )

Create a ggplot with black background

Start by creating a simple scatter plot:

sp <- ggplot(iris, aes(Sepal.Length, Sepal.Width))+
  geom_point(aes(color = Species, shape = Species))+
  stat_smooth(aes(color = Species, fill = Species), 
              method = "lm", alpha = 0.2)+
  scale_color_manual(values = c("#E4F00A", "white", "#22FF00")) + 
  scale_fill_manual(values = c("#E4F00A", "white", "#22FF00")) 

Use the dark theme function – theme_dark():

sp + theme_dark() 

Create a ggplot with a black background:

sp + theme(
  # get rid of panel grids
  panel.grid.major = element_blank(),
  panel.grid.minor = element_blank(),
  # Change plot and panel background
  plot.background=element_rect(fill = "gray"),
  panel.background = element_rect(fill = 'black'),
  # Change legend 
  legend.position = c(0.6, 0.07),
  legend.direction = "horizontal",
  legend.background = element_rect(fill = "black", color = NA),
  legend.key = element_rect(color = "gray", fill = "black"),
  legend.title = element_text(color = "white"),
  legend.text = element_text(color = "white")
  )

Conclusion

This article shows how to change a ggplot theme background color and grid lines. The essentials are summarized below:

  • Create an example of ggplot:
library(ggplot2)
p <- ggplot(ToothGrowth, aes(factor(dose), len)) +
  geom_boxplot()
p
  • Change ggplot background color:
    • use the standard ggplot2 themes (theme_classic(), theme_bw(), theme_minmal(), theme_light(), etc)
    • or, edit the theme function as follow.
# Create a ggplot with white background
p + theme(
  plot.background = element_rect(fill = "white"),
  panel.background = element_rect(fill = "white"),
  axis.line.x = element_line(color = "grey")
  )
  • Create a ggplot with transparent background. The easiest solution is to use the theme_transparent() function [in ggpubr]
p + ggpubr::theme_transparent()

Python Example for Beginners

Two Machine Learning Fields

There are two sides to machine learning:

  • Practical Machine Learning:This is about querying databases, cleaning data, writing scripts to transform data and gluing algorithm and libraries together and writing custom code to squeeze reliable answers from data to satisfy difficult and ill defined questions. It’s the mess of reality.
  • Theoretical Machine Learning: This is about math and abstraction and idealized scenarios and limits and beauty and informing what is possible. It is a whole lot neater and cleaner and removed from the mess of reality.

 

Data Science Resources: Data Science Recipes and Applied Machine Learning Recipes

Introduction to Applied Machine Learning & Data Science for Beginners, Business Analysts, Students, Researchers and Freelancers with Python & R Codes @ Western Australian Center for Applied Machine Learning & Data Science (WACAMLDS) !!!

Latest end-to-end Learn by Coding Recipes in Project-Based Learning:

Applied Statistics with R for Beginners and Business Professionals

Data Science and Machine Learning Projects in Python: Tabular Data Analytics

Data Science and Machine Learning Projects in R: Tabular Data Analytics

Python Machine Learning & Data Science Recipes: Learn by Coding

R Machine Learning & Data Science Recipes: Learn by Coding

Comparing Different Machine Learning Algorithms in Python for Classification (FREE)

Disclaimer: The information and code presented within this recipe/tutorial is only for educational and coaching purposes for beginners and developers. Anyone can practice and apply the recipe/tutorial presented here, but the reader is taking full responsibility for his/her actions. The author (content curator) of this recipe (code / program) has made every effort to ensure the accuracy of the information was correct at time of publication. The author (content curator) does not assume and hereby disclaims any liability to any party for any loss, damage, or disruption caused by errors or omissions, whether such errors or omissions result from accident, negligence, or any other cause. The information presented here could also be found in public knowledge domains.  

Google –> SETScholars