Magdalena A. Tkacz
2012-Apr-12 17:38 UTC
[R] How to automate creation of plots (create series of plots)
Hi All.
I have problem with generating series of plots. In detail:
I have file of data which I insert into dataframe:
data<-read.table("file.txt", header=TRUE, sep=" ")
Data in this file are prepared in such a way, that the header of each
column has a value of one of examined parameter - something like that:
X Y 01.0 01.1 01.2 01.5 01.6 02.0
1 11.74 10.71 16 16 16 1 16 16
2 12.43 10.97 16 16 16 1 1 16
3 11.63 11.92 16 16 1 1 16 1
I need to generate a XY plot for each column (I need to observe
changes in context of parameter (header names) change).
Each column has a few values and it is reflected in point's shape (pch).
I'm doing this using (example for fourth column):
plot(data$X~data$Y,main="Parameter, 01.1", pch=data$01.1)
In this way I have different point shape and value of parameter in
main plot label.
For the first few columns it is:
plot(data$X~data$Y,main="Parameter, 01.0", pch=data$Pr.01.0)
plot(data$X~data$Y,main="Parameter, 1.1", pch=data$Pr.01.1)
plot(data$X~data$Y,main="Parameter, 1.2", pch=data$Pr.01.2)
I use it together with par(mfrow=c(3,2)), so I have 6 plots at a time.
My question is:
How can I automate creation od plots?
The values in headers are not a series - they should be read from
header, because I can not prepare them in one or two "for" loops. (1.2
and next can be 1.5 next 2.0 next 2.7 -certain values are not
predictable)
The problem is that I have a lot of columns (now 57, sometimes - about
100, without initial filtering - more than 300).
Now I manually rewrite parameter value and copy line "plot(...)". It
is very laborious work, and I think it can be automated.
Does anyone has an idea how can I use data frame headers as parameters
in plot (legend and parameter of pch)?
I'm sure that it will be "for" loop - I know how many plots I
need,
but what inside "for" (combining data frame header and plot
parameter)?
Regards
--
/|/| _ _ _/_ /_ ? _ ?/ ?/ _ __
/ ? |(/(/(/(/((-/)(/ ( ?/((/( /_
? ? ?_/
Magdalena Tkacz
R. Michael Weylandt
2012-Apr-12 20:05 UTC
[R] How to automate creation of plots (create series of plots)
I'm not quite sure what you are asking -- when you say an XY plot I
presume you mean a scatter plot of X against Y, but how do the values
underneath the headers play in? Do you just want different symbols?
With a little bit of data wrangling, I think this actually seems quite
well suited to the ggplot2 paradigm, but here's one way to approach it
in base graphics:
for(i in 3:NCOL(dat)){
plot(dat$X, dat$Y, pch = dat[,i], main = paste("Parameter",
names(dat)[i]))
}
Michael
On Thu, Apr 12, 2012 at 1:38 PM, Magdalena A. Tkacz
<magdalena.tkacz at gmail.com> wrote:> Hi All.
>
> I have problem with generating series of plots. In detail:
>
> I have file of data which I insert into dataframe:
> data<-read.table("file.txt", header=TRUE, sep=" ")
>
> Data in this file are prepared in such a way, that the header of each
> column has a value of one of examined parameter - something like that:
> ? ? ?X ? ? Y ? ? ? ? ? 01.0 ? ?01.1 ? 01.2 ? 01.5 ?01.6 ? 02.0
> 1 ?11.74 10.71 ? ? ?16 ? ? ?16 ? ? ?16 ? ? ?1 ? ? ? ?16 ? ?16
> 2 ?12.43 10.97 ? ? ?16 ? ? ?16 ? ? ?16 ? ? ?1 ? ? ? ?1 ? ? ?16
> 3 ?11.63 11.92 ? ? ?16 ? ? ?16 ? ? ? 1 ? ? ? 1 ? ? ? ?16 ? ?1
>
> I need to generate a XY plot for each column (I need to observe
> changes in context of parameter (header names) change).
> Each column ?has a few values and it is reflected in point's shape
(pch).
> I'm doing this using (example for fourth column):
>
> plot(data$X~data$Y,main="Parameter, 01.1", pch=data$01.1)
>
> In this way I have different point shape and value of parameter in
> main plot label.
>
>
> For the first few columns it is:
> plot(data$X~data$Y,main="Parameter, 01.0", pch=data$Pr.01.0)
>
> plot(data$X~data$Y,main="Parameter, 1.1", pch=data$Pr.01.1)
>
> plot(data$X~data$Y,main="Parameter, 1.2", pch=data$Pr.01.2)
> I use it together with par(mfrow=c(3,2)), so I have 6 plots at a time.
>
> My question is:
> How can I automate creation od plots?
> The values in headers are not a series - they should be read from
> header, because I can not prepare them in one or two "for" loops.
(1.2
> and next can be 1.5 next 2.0 next 2.7 -certain values are not
> predictable)
>
> The problem is that I have a lot of columns (now 57, sometimes - about
> 100, without initial filtering - more than 300).
> Now I manually rewrite parameter value and copy line "plot(...)".
It
> is very laborious work, and I think it can be automated.
>
> Does anyone has an idea how can I use data frame headers as parameters
> in plot (legend and parameter of pch)?
> I'm sure that it will be "for" loop - I know how many plots I
need,
> but what inside "for" (combining data frame header and plot
> parameter)?
>
> Regards
>
> --
> /|/| _ _ _/_ /_ ? _ ?/ ?/ _ __
> / ? |(/(/(/(/((-/)(/ ( ?/((/( /_
> ? ? ?_/
> Magdalena Tkacz
>
> ______________________________________________
> 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.