[R] Help with lattice graphics

2008-12-01 Thread ravi
Hi,
I like the formatting and the appearance of lattice plots. But I have not 
succeeded in gettting the right format in my plots with the lattice package in 
one of my applications. In the code shown below, I start by constructing a 
general data frame and show my attempts with the lattice package commands. 
After that, I use the graphics package and show the kind of plot that I want to 
get.

I would like to know how the lattice commands can be modified to get the final 
plot that I have obtained with the graphics package. Any explanatory 
comments to understand better the modifications are most welcome.

Here is my code :
##
rm(list=ls())
# make up a test data frame with 4 columns
# factors in first 3 cols and a numeric in the 4th
vec_a-paste(A,1:4,sep=(''));na-length(vec_a)
vec_b-paste(B,1:5,sep=(''));nb-length(vec_b)
yr-c(2007,2008,2009);ny-length(yr)
fac_a-factor(vec_a);fac_b-factor(vec_b);fac_yr-factor(yr)
n-na*nb*ny
# y is the response variable
y-runif(n);y-round(y,digits=1)
dfa-rep(fac_a,times=nb*ny)
dfb-rep(fac_b,each=na,times=ny)
dfyr-rep(fac_yr,each=na*nb)
dataf-data.frame(dfa=dfa,dfb=dfb,dfyr=dfyr,y=y);head(dataf)
# dataf is the test data frame
# First test with the lattice package
library(lattice)
barchart(y~dfb|dfyr,dataf,layout=c(3,1),beside=FALSE,
  groups=dfa,
  scales=list(x=list(rot=90)),
  par.settings=list(axis.text=list(font=2,cex=0.75),
  par.ylab.text=list(font=2,cex=1.0),
  par.xlab.text=list(font=2,cex=1.0),
  par.main.text=list(font=2,cex=1.0)),
  xlab=b,
  ylab=y,
  main=A test lattice plot)
## lattice code doesn't give the desired plot
## Next try with the graphics package
## Seems to be easier to get the desired plot
##First, some preprocessing of data
df2007-dataf[dfyr==2007,];df2008-dataf[dfyr==2008,];df2009-dataf[dfyr==2009,];
y2007-matrix(df2007$y,ncol=nb,nrow=na)
y2008-matrix(df2008$y,ncol=nb,nrow=na)
y2009-matrix(df2009$y,ncol=nb,nrow=na)
colnames(y2007)-vec_b;colnames(y2008)-vec_b;colnames(y2009)-vec_b;
rownames(y2007)-vec_a;rownames(y2008)-vec_a;rownames(y2009)-vec_a;
ysmax-ceiling(max(colSums(y2007),colSums(y2008),colSums(y2009)))+1
## Now, let's plot
 the combination of plots desired as a lattice plot
col_choice=c(blue, brown,lightgreen, mistyrose)
par(mfrow=c(1,3),mar=c(5,5,5,2))
barplot(y2007,col = col_choice,
  beside=F,xlab=fac_b,ylab=y,main=year 2007,
  font.axis=2,font.lab=2,cex.lab=1.5,cex.axis=1.2,ylim=c(0,ysmax))
legend(x=1,y=ysmax,legend=vec_a,fill = col_choice)
barplot(y2008,col = col_choice,
  beside=F,xlab=fac_b,main=year 2008,
  font.axis=2,font.lab=2,cex.lab=1.5,cex.axis=1.2,ylim=c(0,ysmax))
barplot(y2009,col =col_choice,
  beside=F,xlab=fac_b,main=year 2009,
  font.axis=2,font.lab=2,cex.lab=1.5,cex.axis=1.2,ylim=c(0,ysmax))
par(mfrow=c(1,1))
## Can we get the same plot with the lattice package?
## I would like to have the legend on the top in one row
##

Thanking You,
Ravi

__
R-help@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.


Re: [R] Help with lattice graphics

2008-12-01 Thread baptiste auguie


Hi,

The main difference I saw between your two graphs was the stacking,  
which you can obtain by stack=TRUE in lattice. I'm not sure what  
cosmetic issues you had in mind. Perhaps you can try this,



barchart(y~dfb|dfyr,dataf,layout=c(3,1),stack=T,ylim=c(0, 2.7),


 groups=dfa, strip = strip.custom(var.name=year,  
strip.names = c(TRUE, TRUE)),
 scales=list(x=list(rot=0), y=list(axs=i, at=seq(0, 2.5,  
by=0.5))),

 par.settings=list(axis.text=list(font=2,cex=0.75),
 par.ylab.text=list(font=2,cex=1.0),
 par.xlab.text=list(font=2,cex=1.0),
 par.main.text=list(font=2,cex=1.0)),
 xlab=b,
 ylab=y,auto.key = list(space=top,  
columns=length(levels(dataf$dfa))),

 main=A test lattice plot)


Baptiste

On 1 Dec 2008, at 18:30, ravi wrote:


Hi,
I like the formatting and the appearance of lattice plots. But I  
have not succeeded in gettting the right format in my plots with the  
lattice package in one of my applications. In the code shown below,  
I start by constructing a general data frame and show my attempts  
with the lattice package commands. After that, I use the graphics  
package and show the kind of plot that I want to get.


I would like to know how the lattice commands can be modified to get  
the final plot that I have obtained with the graphics package. Any  
explanatory comments to understand better the modifications are most  
welcome.


Here is my code :
##
rm(list=ls())
# make up a test data frame with 4 columns
# factors in first 3 cols and a numeric in the 4th
vec_a-paste(A,1:4,sep=(''));na-length(vec_a)
vec_b-paste(B,1:5,sep=(''));nb-length(vec_b)
yr-c(2007,2008,2009);ny-length(yr)
fac_a-factor(vec_a);fac_b-factor(vec_b);fac_yr-factor(yr)
n-na*nb*ny
# y is the response variable
y-runif(n);y-round(y,digits=1)
dfa-rep(fac_a,times=nb*ny)
dfb-rep(fac_b,each=na,times=ny)
dfyr-rep(fac_yr,each=na*nb)
dataf-data.frame(dfa=dfa,dfb=dfb,dfyr=dfyr,y=y);head(dataf)
# dataf is the test data frame
# First test with the lattice package
library(lattice)
barchart(y~dfb|dfyr,dataf,layout=c(3,1),beside=FALSE,
 groups=dfa,
 scales=list(x=list(rot=90)),
 par.settings=list(axis.text=list(font=2,cex=0.75),
 par.ylab.text=list(font=2,cex=1.0),
 par.xlab.text=list(font=2,cex=1.0),
 par.main.text=list(font=2,cex=1.0)),
 xlab=b,
 ylab=y,
 main=A test lattice plot)
## lattice code doesn't give the desired plot
## Next try with the graphics package
## Seems to be easier to get the desired plot
##First, some preprocessing of data
df2007-dataf[dfyr==2007,];df2008-dataf[dfyr==2008,];df2009- 
dataf[dfyr==2009,];

y2007-matrix(df2007$y,ncol=nb,nrow=na)
y2008-matrix(df2008$y,ncol=nb,nrow=na)
y2009-matrix(df2009$y,ncol=nb,nrow=na)
colnames(y2007)-vec_b;colnames(y2008)-vec_b;colnames(y2009)-vec_b;
rownames(y2007)-vec_a;rownames(y2008)-vec_a;rownames(y2009)-vec_a;
ysmax-ceiling(max(colSums(y2007),colSums(y2008),colSums(y2009)))+1
## Now, let's plot
 the combination of plots desired as a lattice plot
col_choice=c(blue, brown,lightgreen, mistyrose)
par(mfrow=c(1,3),mar=c(5,5,5,2))
barplot(y2007,col = col_choice,
 beside=F,xlab=fac_b,ylab=y,main=year 2007,
 font.axis=2,font.lab=2,cex.lab=1.5,cex.axis=1.2,ylim=c(0,ysmax))
legend(x=1,y=ysmax,legend=vec_a,fill = col_choice)
barplot(y2008,col = col_choice,
 beside=F,xlab=fac_b,main=year 2008,
 font.axis=2,font.lab=2,cex.lab=1.5,cex.axis=1.2,ylim=c(0,ysmax))
barplot(y2009,col =col_choice,
 beside=F,xlab=fac_b,main=year 2009,
 font.axis=2,font.lab=2,cex.lab=1.5,cex.axis=1.2,ylim=c(0,ysmax))
par(mfrow=c(1,1))
## Can we get the same plot with the lattice package?
## I would like to have the legend on the top in one row
##

Thanking You,
Ravi

__
R-help@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.


_

Baptiste Auguié

School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

Phone: +44 1392 264187

http://newton.ex.ac.uk/research/emag

__
R-help@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.