ManuelPerera-Chang@fmc-ag.com
2005-Nov-07 17:36 UTC
[R] lattice chart: different definitions for series
Hi enthusiasts, Trying to create a single chart in lattice with different plotting definitions for the different series (two series should be drawn with lines and the other without them) I am using a dataset, which includes a grouping variable e.g. clinic with three levels, the variable "year" and a continous variable: "mct". In the graph the variable "year" is in the x axis, with "mct" represented in the y axis. The diagram should include two line diagrams(representing two of the groups) , with the third group represented only with symbols(no lines). Until now I was using white lines to eliminate the lines drawn in the third group, but this solution is not optimal, as the grids are sometimes not visible sp<-list(superpose.symbol=list(pch=c(1,2,1),col=c("blue","red","green")), superpose.line=list(col=c("blue","red","white"),lty=c(1,2,))) ... and then including print(xyplot(mct~trend.data$year,groups=clinic, scales=list(x=list(at=c(15:pno),labels=per.labels)), main=main.title, sub=sub.title, xlab=x.label, ylab=y.label, xlim=c(pno-12,pno+1), panel=function(x,y,...){panel.grid(h=-1,v=-1,col="grey",lty=2,cex=0.1); panel.superpose(x,y,type="l",lwd=1.8,...); panel.superpose(x,y,type="p",cex=1.8,...))}, key=sk, par.settings=sp)); ... was also experimenting, and searching a lot in the WWW for panel.superpose.2 and type=c("b","b","p"), but without success. Many thanks, Manuel
On 11/7/05, ManuelPerera-Chang at fmc-ag.com <ManuelPerera-Chang at fmc-ag.com> wrote:> > > > > Hi enthusiasts, > > Trying to create a single chart in lattice with different plotting > definitions for the different series (two series should be drawn with lines > and the other without them) > > I am using a dataset, which includes a grouping variable e.g. clinic with > three levels, the variable "year" and a continous variable: "mct". > > In the graph the variable "year" is in the x axis, with "mct" represented > in the y axis. > > The diagram should include two line diagrams(representing two of the > groups) , with the third group represented only with symbols(no lines). > > Until now I was using white lines to eliminate the lines drawn in the third > group, but this solution is not optimal, as the grids are sometimes not > visible > > sp<-list(superpose.symbol=list(pch=c(1,2,1),col=c("blue","red","green")), > superpose.line=list(col=c("blue","red","white"),lty=c(1,2,))) > > ... and then including > > print(xyplot(mct~trend.data$year,groups=clinic, > scales=list(x=list(at=c(15:pno),labels=per.labels)), > main=main.title, > sub=sub.title, > xlab=x.label, > ylab=y.label, > xlim=c(pno-12,pno+1), > panel=function(x,y,...){panel.grid(h=-1,v=-1,col="grey",lty=2,cex=0.1); > panel.superpose(x,y,type="l",lwd=1.8,...); > panel.superpose(x,y,type="p",cex=1.8,...))}, > key=sk, > par.settings=sp)); > > ... was also experimenting, and searching a lot in the WWW for > > panel.superpose.2 and type=c("b","b","p"), but without success.I don't know what experiments you did, but the following seems to work fine for me: library(lattice) mydf <- data.frame(year = rep(1991:2000, 3), mct rnorm(30, mean = rep(1:3, each = 10), sd = 0.5), clinic = gl(3, 10)) xyplot(mct ~ year, mydf, groups = clinic, panel = panel.superpose.2, type = c("b", "b", "p")) -Deepayan
ManuelPerera-Chang@fmc-ag.com
2005-Nov-08 11:12 UTC
[R] lattice chart: different definitions for series
Dear Deepayan, Thank you very much for the example. Now I am missing the grids inside my graph. As shown in my sample code yesterday, before I had them defined in the panel=function(x,y,...){panel.grid(h=-1,v=-1,col="grey",lty=2,cex=0.1)} and they were properly drawn, but you did not use this approach in your example, and my guesses this morning to place them together with your code failed. Sorry for my newbee question .. My best regards, Manuel PS.: As for my "experiments", I was trying to use the document "Panel Function for Display Marked by groups", that you wrote. In this document I cannot see that e.g. all the arguments for panel.superpose.2 are optionals, as in your example below. Further in this documentation you explained: "panel.groups - the panel function to be used for each group of points. Defaults to panel.xyplot (behavior in S) " and then .. "type - usually a character vector specifying what should be drawn for each group, passed on to the panel.groups function, which must know what to do with it. By default this is panel.xyplot ..." consecuently I was trying to use "type" as an argument to panel.groups, but without success. Deepayan Sarkar <deepayan.sarkar@ To: ManuelPerera-Chang at fmc-ag.com gmail.com> cc: r-help at stat.math.ethz.ch Subject: Re: lattice chart: different definitions for series 07.11.2005 21:23 On 11/7/05, ManuelPerera-Chang at fmc-ag.com <ManuelPerera-Chang at fmc-ag.com> wrote:> > > > > Hi enthusiasts, > > Trying to create a single chart in lattice with different plotting > definitions for the different series (two series should be drawn withlines> and the other without them) > > I am using a dataset, which includes a grouping variable e.g. clinic with > three levels, the variable "year" and a continous variable: "mct". > > In the graph the variable "year" is in the x axis, with "mct" represented > in the y axis. > > The diagram should include two line diagrams(representing two of the > groups) , with the third group represented only with symbols(no lines). > > Until now I was using white lines to eliminate the lines drawn in thethird> group, but this solution is not optimal, as the grids are sometimes not > visible > > sp<-list(superpose.symbol=list(pch=c(1,2,1),col=c("blue","red","green")), > superpose.line=list(col=c("blue","red","white"),lty=c(1,2,))) > > ... and then including > > print(xyplot(mct~trend.data$year,groups=clinic, > scales=list(x=list(at=c(15:pno),labels=per.labels)), > main=main.title, > sub=sub.title, > xlab=x.label, > ylab=y.label, > xlim=c(pno-12,pno+1), > panel=function(x,y,...){panel.grid(h=-1,v=-1,col="grey",lty=2,cex=0.1); > panel.superpose(x,y,type="l",lwd=1.8,...); > panel.superpose(x,y,type="p",cex=1.8,...))}, > key=sk, > par.settings=sp)); > > ... was also experimenting, and searching a lot in the WWW for > > panel.superpose.2 and type=c("b","b","p"), but without success.I don't know what experiments you did, but the following seems to work fine for me: library(lattice) mydf <- data.frame(year = rep(1991:2000, 3), mct rnorm(30, mean = rep(1:3, each = 10), sd = 0.5), clinic = gl(3, 10)) xyplot(mct ~ year, mydf, groups = clinic, panel = panel.superpose.2, type = c("b", "b", "p")) -Deepayan