Inherit data in ggplot2 theme


Hi there,

I was wondering if there is any possibility to have a conditional theme for ggplot2.

I have created a theme for my package to visualize results, which can either be continuous or discrete.
It returns a list with the theme and a color scale (viridis in this case), like so:

theme_test <- function() {
  # start with minimal theme
  ret <-
  # extend it
  theme_base <- ret + ggplot2::theme()
  # define color scale
  theme_color <- viridis::scale_fill_viridis()
  # return as list

The scale should then either be discrete or continuous, depending on the input data and without the need to specify that in every case.

… is there any way to access the inherited data with the . operator?
Maybe as a function in the theme arguments (like waiver?) or in the function declaration of theme_test?


:pager: @thomasp85 , feel like you’d know if it’s possible… You can yes or no it, and I’m happy to dig, if yes.


AFAIK it is a no… :confused:


OK, thanks anyway :slight_smile:


why do you want to mix between the theme and the scale? they are two different objects. you can make a separate function to handle the discrete/continuous switch indep. of theme setting


I thought it would be more convenient for any user to use it like this.
There are a couple of packages doing that, is there any reason to strictly do it sequentially?


i dont think sequentially is at issue. they are two different functionalities that deal with different ggplot domains. colour scales are layer specific, where themes are plot layout specific.