[R] Combining several mappings in ggplot2

Tribo Laboy tribolaboy at gmail.com
Fri Apr 4 09:11:33 CEST 2008


Hi Thiery,

Thanks for the corrected line. I did manage to plot it now, but
instead of one unified legend now I have two separate legends - one
for the 5 colors, Marked with "Tree" on the top and another for the 4
linetypes, marked with "Lines" at the top. any idea how to unify them?

Regards,

TL

On Thu, Mar 27, 2008 at 6:18 PM, ONKELINX, Thierry
<Thierry.ONKELINX at inbo.be> wrote:
> Dear Tribo,
>
>  I've made a little mistake. It should have been
>
>
>  Orange2 <- data.frame(Tree = as.factor(Tree_v), age = age_v,
>  circumference = circumference_v)
>  Orange2$Lines <- factor(as.numeric(Orange2$Tree) %% 4)
>
>  Have a look at help("%%")
>
>
>  HTH,
>
>  Thierry
>
>
>  ------------------------------------------------------------------------
>  ----
>  ir. Thierry Onkelinx
>  Instituut voor natuur- en bosonderzoek / Research Institute for Nature
>  and Forest
>  Cel biometrie, methodologie en kwaliteitszorg / Section biometrics,
>  methodology and quality assurance
>  Gaverstraat 4
>  9500 Geraardsbergen
>  Belgium
>  tel. + 32 54/436 185
>  Thierry.Onkelinx at inbo.be
>  www.inbo.be
>
>  To call in the statistician after the experiment is done may be no more
>  than asking him to perform a post-mortem examination: he may be able to
>  say what the experiment died of.
>  ~ Sir Ronald Aylmer Fisher
>
>  The plural of anecdote is not data.
>  ~ Roger Brinner
>
>  The combination of some data and an aching desire for an answer does not
>  ensure that a reasonable answer can be extracted from a given body of
>  data.
>  ~ John Tukey
>
>  -----Oorspronkelijk bericht-----
>  Van: Tribo Laboy [mailto:tribolaboy at gmail.com]
>  Verzonden: woensdag 26 maart 2008 17:42
>  Aan: ONKELINX, Thierry
>  CC: hadley wickham; r-help at r-project.org
>
>
> Onderwerp: Re: [R] Combining several mappings in ggplot2
>
>  Hi Thierry
>
>  Thanks for replying. I tried your code, but it spit an error on me:
>
>  > Orange2 <- data.frame(Tree = as.factor(Tree_v), age = age_v,
>  + circumference = circumference_v, Lines =
>  factor(as.numeric(Orange2$Tree) + %% 4))
>  Error: unexpected SPECIAL in:
>  "Orange2 <- data.frame(Tree = as.factor(Tree_v), age = age_v,
>  circumference = circumference_v, Lines = factor(as.numeric(Orange2$Tree)
>  + %%"
>
>  Am I typing it correctly? What does the %% 4 or %%5 mean by the way?
>
>  Regards,
>
>  TL
>
>
>  On Wed, Mar 26, 2008 at 11:26 AM, ONKELINX, Thierry
>  <Thierry.ONKELINX at inbo.be> wrote:
>  > Tribo,
>  >
>  >  It looks like geom_line() accepts only 4 linetypes and you asked for
>  5.
>  >
>  >  library(ggplot2)
>  >
>  > Tree_v <- rep(c(1:5),each = 5)
>  >  age_v <- rep(seq(1,25, by = 5),5) + 10*runif(25)
>  >  circumference_v <- rep(seq(21,45, by = 5), 5)*Tree_v + 25*runif(25)
>  >
>  >  #This will work
>  >
>  > Orange2 <- data.frame(Tree = as.factor(Tree_v), age = age_v,
>  >  circumference = circumference_v, Lines =
>  factor(as.numeric(Orange2$Tree)
>  >  %% 4))
>  >  ggplot(data = Orange2, aes(x = age, y = circumference, color = Tree,
>  >  linetype = Lines)) + geom_line()
>  >
>  >  #This won't
>  >
>  > Orange2 <- data.frame(Tree = as.factor(Tree_v), age = age_v,
>  >  circumference = circumference_v, Lines =
>  factor(as.numeric(Orange2$Tree)
>  >  %% 5))
>  >
>  > ggplot(data = Orange2, aes(x = age, y = circumference, color = Tree,
>  >  linetype = Lines)) + geom_line()
>  >
>  >  HTH,
>  >
>  >  Thierry
>  >
>  >
>  ------------------------------------------------------------------------
>  >  ----
>  >  ir. Thierry Onkelinx
>  >  Instituut voor natuur- en bosonderzoek / Research Institute for
>  Nature
>  >  and Forest
>  >  Cel biometrie, methodologie en kwaliteitszorg / Section biometrics,
>  >  methodology and quality assurance
>  >  Gaverstraat 4
>  >  9500 Geraardsbergen
>  >  Belgium
>  >  tel. + 32 54/436 185
>  >  Thierry.Onkelinx at inbo.be
>  >  www.inbo.be
>  >
>  >  To call in the statistician after the experiment is done may be no
>  more
>  >  than asking him to perform a post-mortem examination: he may be able
>  to
>  >  say what the experiment died of.
>  >  ~ Sir Ronald Aylmer Fisher
>  >
>  >  The plural of anecdote is not data.
>  >  ~ Roger Brinner
>  >
>  >  The combination of some data and an aching desire for an answer does
>  not
>  >  ensure that a reasonable answer can be extracted from a given body of
>  >  data.
>  >  ~ John Tukey
>  >
>  >  -----Oorspronkelijk bericht-----
>  >  Van: r-help-bounces at r-project.org
>  [mailto:r-help-bounces at r-project.org]
>  >  Namens Tribo Laboy
>  >  Verzonden: woensdag 26 maart 2008 12:01
>  >  Aan: hadley wickham
>  >  CC: r-help at r-project.org
>  >  Onderwerp: Re: [R] Combining several mappings in ggplot2
>  >
>  >
>  >
>  >  Apologies! I though that the Orange dataset comes with R, but it is
>  in
>  >  fact in the package "datasets".
>  >
>  >  So here's another "Orange2" dataset for the example:
>  >
>  >  Tree_v = rep(c(1:5),each = 5)
>  >  age_v = rep(seq(1,25, by = 5),5) + 10*runif(25)
>  >  circumference_v <- rep(seq(21,45, by = 5), 5)*Tree_v + 25*runif(25)
>  >  Orange2 <- data.frame(Tree = as.factor(Tree_v), age = age_v,
>  >  circumference = circumference_v)
>  >
>  >
>  >  This works fine:
>  >
>  >  ggplot(data = Orange2, aes(x = age, y = circumference, color = Tree))
>  >  + geom_line()
>  >
>  >  These generate errors (included):
>  >
>  >  > ggplot(data = Orange2, aes(x = age, y = circumference, color =
>  Tree,
>  >  linetype = Tree)) + geom_line()
>  >  Error in get("check_domain", env = ., inherits = TRUE)(., ...) :
>  >   Too many values in domain (5 > 4)
>  >
>  >
>  >  > ggplot(data = Orange2, aes(x = age, y = circumference, color =
>  Tree))
>  >  + geom_line() + scale_linetype_manual(value = c(1:5))
>  >  Error in unit(values, units, data = data) :
>  >   'x' and 'units' must have length > 0
>  >
>  >
>  >  What am I doing wrong?
>  >
>  >
>  >  Regards,
>  >
>  >  TL
>  >
>  >
>  >
>  >  On Wed, Mar 26, 2008 at 2:08 AM, hadley wickham <h.wickham at gmail.com>
>  >  wrote:
>  >  > On Tue, Mar 25, 2008 at 11:48 AM, Tribo Laboy
>  <tribolaboy at gmail.com>
>  >  wrote:
>  >  >  > Hello,
>  >  >  >
>  >  >  >  I want to be able to make a plot that has several series with
>  >  >  >  different color and linetype.
>  >  >  >  Online documentation suggest that this is possible, but I
>  haven't
>  >  found how:
>  >  >  >
>  >  >  >  "We can also create redundant mappings, mapping the same
>  variable
>  >  to
>  >  >  >  multiple aesthetics. This is most useful when producing a
>  graphic
>  >  for
>  >  >  >  both colour and black and white display."
>  >  >  >
>  >  >  >  Here's what I have to get the color
>  >  >  >  ggplot(data = Orange, aes(x = age, y = circumference, color =
>  >  Tree)) +
>  >  >  >  geom_line()
>  >  >  >
>  >  >  >  if i try this I get an error:
>  >  >  >  ggplot(data = Orange, aes(x = age, y = circumference, color =
>  >  Tree,
>  >  >  >  linetype = Tree)) + geom_line()
>  >  >
>  >  >  Please provide a reproducible example (or at least describe the
>  >  >  error!), otherwise we have no way to help you.
>  >  >
>  >  >  Hadley
>  >  >
>  >  >
>  >  >  --
>  >  >  http://had.co.nz/
>  >  >
>  >
>  >  ______________________________________________
>  >  R-help at r-project.org mailing list
>  >  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