Wolfram Fischer - Z/I/M
2003-Jan-23 17:57 UTC
[Rd] proposal: lattice/panel.levelplot with show.z.values
I suggest to add an argument to levelplot which displays the z values in the cells. In the special case of a correlogram the correlation values could be rotated by 45 degres when the correlation is positive and by -45 degress when the correlation is negative (see example). Wolfram NB: The same code should be to panel.catlevelplot if this panel function will be implemented. #---- ADDITIONAL ARGUMENTS FOR panel.levelplot() ------------------- show.z.values = FALSE, # display z values in the cells # if -1: if( srt == 0 ) srt <- 45 # if( z < 0 ) srt <- -srt cex = 1, # size of z values signif = 2, # number of significant digits of z values srt = 0, # rotation of z values #---- ADDITIONAL CODE AT THE END OF panel.levelplot() -------------- if( show.z.values ){ if( show.z.values < 0 ) srt <- ifelse( srt==0, 45, srt ) * sign( z[subscripts] ) ltext( x = x[subscripts] , y = y[subscripts] , labels = signif( z[subscripts], signif ) , cex = cex , srt = srt ) } #---- EXAMPLE ------------------------------------------------------ library(EMV) data(swiss) example.corplot.swiss <- function( show.z.values=-1, ... ){ x.cor <- cor( knn( as.matrix( swiss ) )$data ) diag( x.cor ) <- 0 x.names <- colnames( swiss ) x.cor.data <- data.frame( x = rep( x.names, length( x.names ) ) , y = rep( x.names, each=length( x.names ) ) , val = as.vector( x.cor ) ) print( levelplot( val ~ x + y, data = x.cor.data , show.z.values = show.z.values , scales= list( x = list( labels = x.names, rot=90, alternating=F , at = 1 : length( x.names ) ) , y = list( labels = x.names, alternating=F , at = 1 : length( x.names ) ) ) , zlim = c( -1, 1 ) , ... )) }