Hi, I would like to put a number to each of the plotted curves in each panel. The problem is that there are different numbers of curves in different panels, so as you can see from the code below, I could put the correct numbers to the curves in the first panel, but for the second panel, both location and number of labels are incorrect (I would like to have "(1)" at location x=3.5, y=211 and of course no label "(2)" in the second panel). What is the correct way to solve this? I have a vector where the i-th entry specifies the number of curves in panel i, so I somehow have to bring this vector into play... Thanks very much in advance. Marius library(lattice) column1=c(1,1,1,1,1,1,2,2) column2=c(1,1,1,2,2,2,1,1) column3=c(1,2,3,1,2,3,4,5) column4=c(111,112,113,121,122,123,211,212) dataframe=data.frame (panelnumber=column1,curvenumber=column2,x=column3,y=column4) xyplot(dataframe[,4]~dataframe[,3]|dataframe[, 1],type="l",lty=1,groups=dataframe[,2],layout=c(2,1),aspect=1, panel=function(...){ panel.xyplot(...) panel.text(3.4,113,label="(1)") panel.text(3.4,123,label="(2)") } )
Gabor Grothendieck
2007-Dec-31 16:40 UTC
[R] Different number of labels in different panels
Use this panel function: function(x,y,subscripts,...){ panel.superpose(x, y, subscripts, ...) grps <- as.character(sort(unique(dataframe[subscripts,2]))) draw.key(simpleKey(grps), TRUE, vp = viewport(0.15, 0.9)) } The code below is the same as in your post except we have added library(grid) and replaced the panel function with the above one: library(lattice) library(grid) column1=c(1,1,1,1,1,1,2,2) column2=c(1,1,1,2,2,2,1,1) column3=c(1,2,3,1,2,3,4,5) column4=c(111,112,113,121,122,123,211,212) dataframe=data.frame(panelnumber=column1,curvenumber=column2,x=column3,y=column4) xyplot(dataframe[,4]~dataframe[,3]|dataframe[,1],type="l",lty=1,groups=dataframe[,2],layout=c(2,1),aspect=1, panel=function(x,y,subscripts,...){ panel.superpose(x, y, subscripts, ...) grps <- as.character(sort(unique(dataframe[subscripts,2]))) draw.key(simpleKey(grps), TRUE, vp = viewport(0.15, 0.9)) } ) On Dec 31, 2007 10:41 AM, Hofert Marius <m_hofert at web.de> wrote:> Hi, > > I would like to put a number to each of the plotted curves in each > panel. The problem is that there are different numbers of curves in > different panels, so as you can see from the code below, I could put > the correct numbers to the curves in the first panel, but for the > second panel, both location and number of labels are incorrect (I > would like to have "(1)" at location x=3.5, y=211 and of course no > label "(2)" in the second panel). What is the correct way to solve > this? I have a vector where the i-th entry specifies the number of > curves in panel i, so I somehow have to bring this vector into play... > > Thanks very much in advance. > > Marius > > library(lattice) > column1=c(1,1,1,1,1,1,2,2) > column2=c(1,1,1,2,2,2,1,1) > column3=c(1,2,3,1,2,3,4,5) > column4=c(111,112,113,121,122,123,211,212) > dataframe=data.frame > (panelnumber=column1,curvenumber=column2,x=column3,y=column4) > xyplot(dataframe[,4]~dataframe[,3]|dataframe[, > 1],type="l",lty=1,groups=dataframe[,2],layout=c(2,1),aspect=1, > panel=function(...){ > panel.xyplot(...) > panel.text(3.4,113,label="(1)") > panel.text(3.4,123,label="(2)") > } > ) > > ______________________________________________ > 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. >
On 12/31/07, Hofert Marius <m_hofert at web.de> wrote:> Hi, > > I would like to put a number to each of the plotted curves in each > panel. The problem is that there are different numbers of curves in > different panels, so as you can see from the code below, I could put > the correct numbers to the curves in the first panel, but for the > second panel, both location and number of labels are incorrect (I > would like to have "(1)" at location x=3.5, y=211 and of course no > label "(2)" in the second panel). What is the correct way to solve > this? I have a vector where the i-th entry specifies the number of > curves in panel i, so I somehow have to bring this vector into play...A common legend is the usual approach, but take a look at ?panel.number -Deepayan