forgot to send to list
From: Duncan Mackay [mailto:dulca...@bigpond.com] Sent: Tuesday, 15 September 2015 01:47 To: 'Christine Lee' Subject: RE: 回覆︰ [R] adding a line across plots in xy plot with panel.abline Hi If your panel function was like this (just adding to plot the points with the argument panel.xyplot panel= function(Date1,DI){ panel.xyplot(Date1,DI) panel.abline(h=1,lty=2,lwd=3) } and this would cause an error see ? panel.xyplot you can test it by replacing the lines and see what happens Now with the panel function like this panel = function(x, y, ...){ panel.xyplot(x,y, ...) panel.abline(h=1,lty=2,lwd=3) } it will “carry” the parameters in par.settings to the functions within the panel function. One advantage of this is that you do not have to finish panel.xplot with what you want eg panel.xyplot(x,y, pch = 16, col = c(1,2), cex = 2) In some contexts you can get away with just panel = function(...){ but in this case there is an error message in each panel saying y cannot be found I cannot think of a good example at the moment run demo(lattice::intervals ) and look at the code output see also ? panel.superpose Regards Duncan From: Christine Lee [mailto:leptostra...@yahoo.com] Sent: Monday, 14 September 2015 19:30 To: Duncan Mackay; R Subject: 回覆︰ [R] adding a line across plots in xy plot with panel.abline Thanks, Duncan, I am confused by the function(x,y, ...) and panel.xyplot(x,y,...). Is this a must to put in "..."? I knew this may be a stupid question. I am sorry. Christine Duncan Mackay <dulca...@bigpond.com> 於 2015年09月14日 (週一) 3:56 PM 寫道﹕ Hi As Bert has intimated there was a misspelling in panel.abline To get points as well you need the appropriate arguments for a panel function otherwise you would only get a line. You only had a function for a line in panel function so adding panel.xyplot will give you points as well. xyplot(DI~Date1|Station, data=Raw, groups = culr, par.settings = list(strip.background = list(col = "transparent"), superpose.symbol = list(cex = rep(2, 2), col=c("grey","black"), pch = rep(16,2))), type="p", xlab=list("Month",cex=1.5), ylab=list("Dispersion index",cex=1.5), index.cond=list(c(1,2,3,4)), auto.key = T, layout=c(4,1), panel = function(x, y, ...){ panel.xyplot(x,y, ...) panel.abline(h=1,lty=2,lwd=3) } ) Regards Duncan Duncan Mackay Department of Agronomy and Soil Science University of New England Armidale NSW 2351 Email: home: mac...@northnet.com.au -----Original Message----- From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of Christine Lee via R-help Sent: Monday, 14 September 2015 13:43 To: r-help@r-project.org Subject: [R] adding a line across plots in xy plot with panel.abline Dear all, I want to draw a line at DI=1 across all four graphs in the xy plot, I have used panel.abline, but I failed to do so, does any one has an idea of what has went wrong? structure(list(Date = structure(c(6L, 7L, 2L, 4L, 13L, 17L, 5L, 12L, 4L, 11L, 14L, 9L, 7L, 2L, 4L, 13L, 10L, 17L, 5L, 12L, 8L, 4L, 11L, 14L, 9L, 16L, 15L, 3L, 10L, 1L, 17L, 5L, 12L, 8L, 4L, 11L, 14L, 12L, 8L, 4L, 11L, 14L), .Label = c("1/10", "1/11", "11/11", "12/11", "13/10", "19/9", "2/10", "2/11", "20/9", "23/9", "26/11", "29/10", "29/11", "30/11", "31/10", "4/10", "6/10"), class = "factor"), Year = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Y2002", "Y2014"), class = "factor"), Station = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L), .Label = c("E", "F", "H", "I"), class = "factor"), DI = c(13.4, 7, 12.6, 12.6, 5.2, 2.2, 1, 1, 1.2, 0.8, 2.3, 3.8, 5.4, 4.6, 5, 3.2, 3.1, 8.7, 2.1, 2.7, 4.9, 4, 2.2, 5.3, 5.6, 4.8, 4, 8.6, 1.9, 2.9, 5.9, 2.6, 8.9, 4, 13.5, 15.3, 12.8, 3.4, 4.7, 1.7, 0.9, 1.7), Date1 = structure(c(16697, 16710, 16740, 16751, 16768, 16714, 16721, 16737, 16751, 16765, 16769, 16698, 16710, 16740, 16751, 16768, 16701, 16714, 16721, 16737, 16741, 16751, 16765, 16769, 16698, 16712, 16739, 16750, 16701, 16709, 16714, 16721, 16737, 16741, 16751, 16765, 16769, 16737, 16741, 16751, 16765, 16769), class = "Date")), .Names = c("Date", "Year", "Station", "DI", "Date1"), row.names = c(NA, -42L), class = "data.frame") Raw$Date1<-as.Date(Raw$Date,"%d/%m") culr<-ifelse(Raw$Year=="Y2002","Year 2002","Year 2014") library(lattice) xyplot(DI~Date1|Station, data=Raw, groups = culr, par.settings = list(strip.background = list(col = "transparent"), superpose.symbol = list(cex = rep(2, 2), col=c("grey","black"), pch = rep(16,2))), type="p", xlab=list("Month",cex=1.5), ylab=list("Dispersion index",cex=1.5), index.cond=list(c(1,2,3,4)), auto.key = T, layout=c(4,1), panel=function(Date1,DI){ panel.labline(h=1,lty=2,lwd=3) }) Many thanks. Regards, Christine ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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. [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.