[R] subset inside a lattice plot using panel.lines

Mark Difford mark_difford at yahoo.co.uk
Mon Aug 4 17:44:34 CEST 2008


Hi Michael,

>> Pulling my hair out here trying to get something very simple to work. ...

I can't quite see what you are trying to do [and I am not sure that you
clearly state it], but you could make things easier and simpler by (1)
creating a factor to identify your groups of rows more cleanly and (2) by
using the groups= argument in lattice.

## Something along these lines
copyDat <- originalDat
copyDat$newFac <- gl(2, 387, 774, labels=c("A","B"))

xyplot(response ~ predictor|maybe.condition, data=copyDat, groups=newFac)

I hope this gives you some ideas.

Mark.


Michael Hopkins wrote:
> 
> 
> 
> Hi R people [duplicate - sorry, just posted HTML by mistake]
> 
> Pulling my hair out here trying to get something very simple to work.   
> Have a data frame of 774 rows and want to plot first and second half  
> on same axes with different colours.  A variable is present call 'row'  
> created like this and checked to be OK:
> 
> 	row <- seq( len=length( variable1 ) )
> 
> ...so I just want to plot the two subsets where row <= 387 and where  
> row > 387.  None of these work properly:
> 
> plots both over each other in correct colours
> 	opt_plot2 <- function( var_string, c, units ) {
> 	print( xyplot( get(var_string) ~ variable1 | variable2, panel =
> 	function( x, y, ... ) {
> 		panel.xyplot( x, y, type ="n", ... )
> 		panel.grid( h=-1, v=-1, lty=3, lwd=1, col="grey" )
> 		panel.lines( x, y, col = "red", subset = row <= 387 )
> 		panel.lines( x, y, col = "dark green", subset = row > 387 )
> 		},
> 	}
> 
> plots both just in red
> 	...		panel.lines( x[row <= 387], y[row <= 387], col = "red" )
> 			panel.lines( x[row > 387], y[row > 387], col = "dark green" )
> 
> first <- (row <= 387)
> second <- (row > 387)
> 
> plots both over each other in correct colours
> 	...		panel.lines( x, y, col = "red", subset = first )
> 			panel.lines( x, y, col = "dark green", subset = second )
> plots both just in red
> 	...		panel.lines( x[first], y[first], col = "red" )
> 			panel.lines( x[second], y[second], col = "dark green" )
> 
> 
> I'm feeling frustrated and a bit stupid but should this be so  
> difficult?  Any help or tips on what I am doing wrong greatly  
> appreciated.
> 
> TIA
> 
> Michael
> 
> ______________________________________________
> 
>      Hopkins Research      Touch the Future
> 
> ______________________________________________
> 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.
> 
> 

-- 
View this message in context: http://www.nabble.com/subset-inside-a-lattice-plot-using-panel.lines-tp18813236p18813818.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list