Mikata-Project / ggthemr

Themes for ggplot2.
886 stars 107 forks source link

Change colors without set theme #46

Open Adrian-AlvarezMolina opened 3 years ago

Adrian-AlvarezMolina commented 3 years ago

Hi, first of all congrats for the amazing package and themes !

Following the examples I achieve to change the theme of a ggplot2 object following your instructions in the last part

Next line set the theme

dust_theme <- ggthemr(palette = "dust", set_theme = FALSE)

Next line pass the theme object from dust_theme to example_plot, works fine for me

example_plot + dust_theme$theme

Here's come the issue, when I try to pass also the colors for the scale to the plot

example_plot + dust_theme$theme + dust_theme$scales$scale_fill_discrete() warning: attempt to apply non-function

The colors doesn't change, and there's nothing in the object dust_theme referred to scales dust_theme$scales = NULL dust_themes$scales$scale_fill_discrete

Any idea about why the colors don't change??. I achieve to change colors if I type, but they are not so well adapted to the background

example_plot + dust_theme$theme +scale_fill_manual(values = dust_theme$palette$swatch)

Thanks for your time and help!

Matt-Int commented 3 years ago

Hi @Adrian-AlvarezMolina,

I have recreated your issue, and can confirm that using the approach in the README doesn't work.

I also found that using the swatch is the only way to change the colours without changing the theme:

library(ggthemr)

dust_theme <- ggthemr(palette = "dust", set_theme = FALSE)

ggplot(mtcars, aes(mpg, cyl, color = factor(am))) +
    geom_point() +
    dust_theme$theme + 
    scale_color_manual(values = dust_theme$palette$swatch)

As to why the colours do not change, it appears as if the dust_theme$scales does not exist, as per your original comment. I've tracked narrowed it down to this commit from last year, which removed the scales element from the theme structure.

I'll make a pull request to update the readme as this part is no longer accurate.