5

I created an theme for ggplot, looks like this:

my_theme <- function() {

  theme_minimal() %+replace%
    theme(


      plot.margin = unit(c(1, 1, 1, 0.5), "cm"),
      plot.title = element_text(size = 14, face = "bold", hjust = 0.5, colour = "#DBD9D9", margin = margin(0,0,10,0)),
      plot.subtitle = element_text(size = 12, hjust = 0.5, colour = "#797B86", margin=margin(0,0,30,0)),
      plot.background = element_rect(fill = "#2D3142"),

      panel.border = element_rect(colour = "#2D3142", fill=NA, size=1),
      panel.grid.major.x = element_blank(),
      panel.grid.major = element_line(colour = "#586082", size = 0.1, linetype = "dotted"),
      panel.grid.minor = element_line(colour = "#586082", size = 0.3, linetype = "dotted"),
      panel.background = element_rect(fill = '#2D3142'),

      axis.line = element_line(colour = "#2D3142"),
      axis.title = element_text(colour = "#797B86", size = 11),
      axis.text = element_text(colour = "#DBD9D9", size = 9, face = "bold"),
      axis.title.x = element_text(margin = margin(0.5, 0, 1, 0, unit = "cm")),
      axis.title.y = element_text(margin = margin(0, 0.5, 0, 0, unit = "cm")),

      legend.margin = margin(unit(c(3, 3, 3, 3), "cm")),
      legend.position = "bottom",
      legend.background = element_rect(fill = "#2D3142", color = NA),
      legend.text = element_text(colour = "#DBD9D9", size = 11, face = "bold"),
      legend.title = element_text(colour = "#797B86", size = 11),
      legend.key = element_blank(),

      complete = TRUE
    )
}

This works well until I tried to add custom font, once I did it like this

with_font <- function() {
  windowsFonts(lucida = windowsFont("Lucida Console"))

  theme_minimal() %+replace%
    theme(
      text = element_text(family = "lucida"),

      plot.margin = unit(c(1, 1, 1, 0.5), "cm"),
      plot.title = element_text(size = 14, face = "bold", hjust = 0.5, colour = "#DBD9D9", margin = margin(0,0,10,0)),
      plot.subtitle = element_text(size = 12, hjust = 0.5, colour = "#797B86", margin=margin(0,0,30,0)),
      plot.background = element_rect(fill = "#2D3142"),

      panel.border = element_rect(colour = "#2D3142", fill=NA, size=1),
      panel.grid.major.x = element_blank(),
      panel.grid.major = element_line(colour = "#586082", size = 0.1, linetype = "dotted"),
      panel.grid.minor = element_line(colour = "#586082", size = 0.3, linetype = "dotted"),
      panel.background = element_rect(fill = '#2D3142'),

      axis.line = element_line(colour = "#2D3142"),
      axis.title = element_text(colour = "#797B86", size = 11),
      axis.text = element_text(colour = "#DBD9D9", size = 9, face = "bold"),
      axis.title.x = element_text(margin = margin(0.5, 0, 1, 0, unit = "cm")),
      axis.title.y = element_text(margin = margin(0, 0.5, 0, 0, unit = "cm")),

      legend.margin = margin(unit(c(3, 3, 3, 3), "cm")),
      legend.position = "bottom",
      legend.background = element_rect(fill = "#2D3142", color = NA),
      legend.text = element_text(colour = "#DBD9D9", size = 11, face = "bold"),
      legend.title = element_text(colour = "#797B86", size = 11),
      legend.key = element_blank(),

      complete = TRUE
    )
}

I always get an error

Error in FUN(X[[i]], ...) : Theme element 'text' has NULL property: face, colour, size, hjust, vjust, angle, lineheight, margin, debug

Once i try to use it in my plot. Could you guys please suggest me whats wrong with that?

0 Answers0