Dear R Users,
I recently posted an email on this list about the use of data.frame and
overlaying multiple plots. Deepayan kindly indicated to me the
panel.superposition command which worked perfectly in the context of the
example I gave.
I'd like to go a little bit further on this topic using a more complex
dataset structure (actually the one I want to work on).
>mydata
Plot Model Individuals Time Observed
Predicted
1 1 A 1 0.05
10 10.2
2 1 A 1 0.10
20 19.5
etc...
10 1 B 1 0.05 10
9.8
11 1 B 1 0.10 20
20.2
etc...
There are p "levels" in mydata$Plot, m in mydata$Model, n in
mydata$Individuals and t in mydata$Time (Note that I probably use the
word levels improperly as all columns are not factors). Basically, this
dataset summarizes the t measurements obtained in n individuals as well
as the predicted values from m different modeling approaches (applied to
all individuals). Therefore, the observations are repeated m times in
the Observed columns, while the predictions appears only once for a
given model an a given individual.
What I want to write is a R batch file creating a Trellis graph, where
each panel corresponds to one individual and contains the observations
(as scatterplot) plus the predicted values for all models (as lines of
different colors)... $Plot is just a token: it might be used to not
overload graphs in case there are too many tested models. The fun part
is that the values of p, m, n and t might vary from one dataset to the
other, so everything has to be coded dynamically.
For the plotting part I was thinking about having a loop in my code
containing something like that:
for (i in 1:nlevels(mydata$Model)) {
subdata<-subset(mydata,mydata$Model=level(mydata$Model)[i])
xyplot(subset(Observed + Predicted ~ Time | Individuals, data =
subdata) #plus additionnal formatting code
}
Unfortunately, this code simply creates a new Trellis plot instead of
adding the model one by one on the panels. Any idea or link to a useful
command will wellcome.
Sebastien
Hi Sebastian,
I think you need to rearrange your data a bit. Firstly, you need to
put observed on the same footing as the different models, so you would
have a new column in your data called value (previously observed and
predicted) and a new model type ("observed"). Then you could do:
xyplot(value ~ time | individauls, data=mydata, group=model)
Hadley
On 6/21/07, S?bastien <pomchip at free.fr> wrote:> Dear R Users,
>
> I recently posted an email on this list about the use of data.frame and
> overlaying multiple plots. Deepayan kindly indicated to me the
> panel.superposition command which worked perfectly in the context of the
> example I gave.
> I'd like to go a little bit further on this topic using a more complex
> dataset structure (actually the one I want to work on).
>
> >mydata
> Plot Model Individuals Time Observed
> Predicted
> 1 1 A 1 0.05
> 10 10.2
> 2 1 A 1 0.10
> 20 19.5
> etc...
> 10 1 B 1 0.05 10
> 9.8
> 11 1 B 1 0.10 20
> 20.2
> etc...
>
> There are p "levels" in mydata$Plot, m in mydata$Model, n in
> mydata$Individuals and t in mydata$Time (Note that I probably use the
> word levels improperly as all columns are not factors). Basically, this
> dataset summarizes the t measurements obtained in n individuals as well
> as the predicted values from m different modeling approaches (applied to
> all individuals). Therefore, the observations are repeated m times in
> the Observed columns, while the predictions appears only once for a
> given model an a given individual.
>
> What I want to write is a R batch file creating a Trellis graph, where
> each panel corresponds to one individual and contains the observations
> (as scatterplot) plus the predicted values for all models (as lines of
> different colors)... $Plot is just a token: it might be used to not
> overload graphs in case there are too many tested models. The fun part
> is that the values of p, m, n and t might vary from one dataset to the
> other, so everything has to be coded dynamically.
>
> For the plotting part I was thinking about having a loop in my code
> containing something like that:
>
> for (i in 1:nlevels(mydata$Model)) {
>
> subdata<-subset(mydata,mydata$Model=level(mydata$Model)[i])
> xyplot(subset(Observed + Predicted ~ Time | Individuals, data > subdata)
#plus additionnal formatting code
>
> }
>
> Unfortunately, this code simply creates a new Trellis plot instead of
> adding the model one by one on the panels. Any idea or link to a useful
> command will wellcome.
>
> Sebastien
>
> ______________________________________________
> R-help at stat.math.ethz.ch 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.
>
Sorry, I have forgotten to tell that I work on R version 2.5.0 on Windows XP sp2. S?bastien a ?crit :> Dear R Users, > > I recently posted an email on this list about the use of data.frame and > overlaying multiple plots. Deepayan kindly indicated to me the > panel.superposition command which worked perfectly in the context of the > example I gave. > I'd like to go a little bit further on this topic using a more complex > dataset structure (actually the one I want to work on). > > >mydata > Plot Model Individuals Time Observed > Predicted > 1 1 A 1 0.05 > 10 10.2 > 2 1 A 1 0.10 > 20 19.5 > etc... > 10 1 B 1 0.05 10 > 9.8 > 11 1 B 1 0.10 20 > 20.2 > etc... > > There are p "levels" in mydata$Plot, m in mydata$Model, n in > mydata$Individuals and t in mydata$Time (Note that I probably use the > word levels improperly as all columns are not factors). Basically, this > dataset summarizes the t measurements obtained in n individuals as well > as the predicted values from m different modeling approaches (applied to > all individuals). Therefore, the observations are repeated m times in > the Observed columns, while the predictions appears only once for a > given model an a given individual. > > What I want to write is a R batch file creating a Trellis graph, where > each panel corresponds to one individual and contains the observations > (as scatterplot) plus the predicted values for all models (as lines of > different colors)... $Plot is just a token: it might be used to not > overload graphs in case there are too many tested models. The fun part > is that the values of p, m, n and t might vary from one dataset to the > other, so everything has to be coded dynamically. > > For the plotting part I was thinking about having a loop in my code > containing something like that: > > for (i in 1:nlevels(mydata$Model)) { > > subdata<-subset(mydata,mydata$Model=level(mydata$Model)[i]) > xyplot(subset(Observed + Predicted ~ Time | Individuals, data = > subdata) #plus additionnal formatting code > > } > > Unfortunately, this code simply creates a new Trellis plot instead of > adding the model one by one on the panels. Any idea or link to a useful > command will wellcome. > > Sebastien > > ______________________________________________ > R-help at stat.math.ethz.ch 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. > > >