I suggest to add an argument zlim to levelplot(). This would be a help e.g. to plot a sort of correlogram (or corrgram, how Micheal Friendly named it, c.f.: http://euclid.psych.yorku.ca/SCS/Papers/corrgram.pdf) When using panel.catlevelplot which I suggested yesterday the graphic becomes even nicer. Wolfram #---- ADDITIONAL ARGUMENT FOR levelplot() -------------------------- zlim = range(z[!is.na(z)]), #---- ADDITIONAL CODE IN levelplot() ------------------------------- #--- ORIGINAL --- # zrng <- extend.limits(range(z[!is.na(z)])) #--- NEW --- zrng <- extend.limits( zlim ) #---- EXAMPLE ------------------------------------------------------ library(EMV) data(swiss) example.corplot.swiss <- function( ... ){ 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 ## --- omit next argument if panel.catlevelplot is not yet defined --- , panel = panel.catlevelplot , 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 ) , ... )) } #---- --------------------------------------------------------------