[R] Achieve independent fine user control of ggplot geom settings when using groups in multiple geom's

Ista Zahn istazahn at gmail.com
Thu Oct 29 18:34:36 CET 2015


I would say in a word, 'no'. What you seem to be implying is that you
want multiple color scales, multiple shape scales, etc. As far as I
know there is no support for that in ggplot2.

Perhaps if you show us what you're actually trying to accomplish
someone can suggest a solution or at least a work-around.

Best,
Ista

On Thu, Oct 29, 2015 at 12:26 PM, sbihorel
<Sebastien.Bihorel at cognigencorp.com> wrote:
> Hello,
>
> Before I get to my question, I want to make clear that the topic of my
> present post is similar to posts I recently submitted to the list. Although
> I appreciate the replies I got, I believe that I did not correctly frame
> these previous posts to get to the bottom of things.
> I also want to make clear that the code example that I have inserted in this
> post is meant to illustrate my points/questions and does not reflect a
> particular interest in the data or the sequence of ggplot geom's used
> (except otherwise mentioned). Actually, I purposefully used junk meaningless
> data, geom's sequence, and settings, so that we agree the plot is ugly and
> that we, hopefully, don't get hang on specifics and start discussing about
> the merit of one approach vs another.
>
> So here are my questions:
>
> 1- Can a user independently control the settings of each geom's used in a
> ggplot call sequence when grouping is required?
>
> By control, I mean: user defines the graphical settings (groups, symbol
> shapes, colors, fill colors, line types, size scales, and alpha) and does
> not let ggplot choose these settings from some theme default.
> By independently, I mean: the set of graphical settings can be totally
> different from one group to the next and from one geom to the next.
>
> If this fine control can be achieved, how would you go about it (please, be
> assured that I already spent hours miserably failing to get to anything
> remotely productive, so your help would be really appreciated)?
>
> library(dplyr)
> library(tidyr)
> library(ggplot2)
> set.seed(1234)
> dummy <- data.frame(dummy = numeric())
> data <- data.frame(x1 = rep(-2:2, each = 80) + rnorm(4000, sd = 0.1),
>                    g1 = rep(1:4, each = 1000))
> data <- data %>% mutate(y1 = -x1^2 + 2*x1 - 2 + g1 + rnorm(4000, sd = 0.25))
> data2 <- data %>% select(x2=x1, y2=y1, g2=g1) %>% mutate(x2=-x2)
> data3 <- data.frame(x3 = sample(seq(-2, 2, by = 0.1), 20, replace = TRUE),
>                     y3 = runif(20, min=-8, max=4),
>                     g3 = rep(1:4, each = 5)) %>% group_by(g3) %>%
> arrange(x3)
>
> gplot <- ggplot(dummy) ### I know this line is not necessary in this
> particular example, please assume this is relevantin the actual framework I
> am trying to build
> gplot <- gplot +
>   geom_smooth(data = data2,
>               aes(x2, y2, group = g2, color = factor(g2), linetype =
> factor(g2), size = 0.5*g2),
>               method = 'loess') +
>   geom_path(data = data3,
>             aes(x3, y3, group = g3, color = factor(g3), linetype =
> factor(g3), shape = factor(g3), size = 0.5*g3)) +
>   geom_point(data = data,
>              aes(x1, y1, group = g1, color = factor(g1), fill = factor(g1),
> shape = factor(g1), size = g1))
> gplot
>
> 2- Is the situation easier or more complex (ie, does ggplot make some
> decisions/assumptions for the user?) if the same x, y, and group variables
> are used in different geom's but the user still wants to provide
> independently graphical settings for each geom?
>
> Thank you
>
> Sebastien
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list