hms-dbmi / UpSetR

An R implementation of the UpSet set visualization technique published by Lex, Gehlenborg, et al..
https://cran.rstudio.com/web/packages/UpSetR
Other
746 stars 149 forks source link

support for ggplot themes #24

Open ngehlenborg opened 9 years ago

ngehlenborg commented 9 years ago

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.

JakeConway commented 9 years ago

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?

ngehlenborg commented 9 years ago

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

JakeConway commented 7 years ago

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

ngehlenborg commented 7 years ago

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)

JakeConway commented 7 years ago

How would we specify what plot the theme belongs to?

martincadek commented 4 years ago

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!

tomlincr commented 2 years ago

@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