UpSetR icon indicating copy to clipboard operation
UpSetR copied to clipboard

support for ggplot themes

Open ngehlenborg opened this issue 9 years ago • 7 comments

http://docs.ggplot2.org/0.9.2.1/theme.html

Some discussion about which parts of the plot should not be affected by themes will be required.

ngehlenborg avatar Jul 15 '15 23:07 ngehlenborg

what are some examples of themes that you would want to implement? there are built in schemes, then theres obviously all of those parameters for full customization. what should we allow?

JakeConway avatar Jul 18 '15 06:07 JakeConway

My understanding is that by using the variables defined by the themes we would essentially be able to support any theme: http://docs.ggplot2.org/dev/vignettes/themes.html

ngehlenborg avatar Jul 20 '15 13:07 ngehlenborg

@ngehlenborg : I could add a labels parameter that could control the sizes and maybe fonts to the axis labels, set names, and intersection sizes?

JakeConway avatar Aug 18 '16 18:08 JakeConway

My suggestion for themes is motivated by the fact that the list of parameters is already so long. Would it be hard to add support for themes? (which might be more in line of what people are generally doing with plots based on ggplot2)

ngehlenborg avatar Aug 18 '16 18:08 ngehlenborg

How would we specify what plot the theme belongs to?

JakeConway avatar Aug 18 '16 18:08 JakeConway

Could anyone please confirm if anyone has any workaround for this issue? In my case, I'd like to use themes in order to change the default family of fonts. If UpsetR is to be used in scientific journals, most likely it will need to support this. The ideal scenario I wish I could use would be the following:

# using extrafont v0.17; UpSetR v1.3.3; ggplot2 v3.1.0
upset(data = movies, 
      order.by = "freq", 
      keep.order = TRUE,
      mainbar.y.label = "Example plot", 
      point.size = 4, 
      line.size = 1,
      sets.x.label = NULL) +
     theme(text = element_text(family = "Times New Roman"))

But if @JakeConway would be happy to add labels parameter that supports this OR suggest what functions would need to be modified to customise it, that would be really helpful!

martincadek avatar Feb 12 '20 13:02 martincadek

@martincadek it seems you can use theme_set() as a workaround for font family, but unfortunately not for font size (which I came here looking for!)

plot_theme = theme_grey() %+replace%  
  theme(text = element_text(family = "Times"))
theme_set(plot_theme)
p = upset(data = movies, 
      order.by = "freq", 
      keep.order = TRUE,
      mainbar.y.label = "Example plot", 
      point.size = 4, 
      line.size = 1,
      sets.x.label = NULL) 
p 

tomlincr avatar Jan 24 '22 17:01 tomlincr