[R] Overlaying a single contour from a new data array in levelplot

Jenny Barnes jmb at mssl.ucl.ac.uk
Mon Jul 30 11:54:33 CEST 2007


Dear Deepayan

Thank you for your response - it has proved very very helpful, I can't thank you 
enough! 

I have another question for you if you have time to reply. I know you have been 
asked about the colour of the polygon outline before (27 April 2007) and you 
replied that is a bug and the border can only be black or transparent...

I was wondering if you have found a way to change the colour of the outline 
since this correspondence? If not please can you tell me how to get around this 
myself? You mentioned writing a replacement to lpolygon - I do not know how to 
do this - would it be possible for you to guide me further? 

I would really benefit from having the border of the polygon in white as it goes 
over the "sea" which is also white and would therefore only be seen over the 
"land", much neater!

Many thanks,

Jenny

 

On 7/24/07, Jenny Barnes <jmb_at_mssl.ucl.ac.uk> wrote:
> Dear R-Help community,
>
> I am trying to overlay a single contour line over a correlation plot using
> levelplot in the lattice package. These are the two arrays:
>
> 1) a correlation plot over Africa - so each grid square is a different colour
> dependent on correlation - this is in an array: result_cor with dim[465,465]
>
> 2) a single contour line from a ***different data source*** - this is from 
data
> related to the p-values for the above correlation plot - I want to overlay 
only
> the 95% confidence contour. The p-values are stored in an array: 
result.p.values
> with same dimensions as above.
>
> I have read about using panel.levelplot and panel.contourplot in the R-help
> mailing list but I don't know the right way to call two different data arrays,
> can anybody help me please? I appreciate your time and help with this 
question.

I can think of a couple of different ways, but the simplest will probably be to 
compute the single contour beforehand and add it after the standard levelplot 
using a panel function. E.g., using the 'volcano' data for both matrices:

## you need the explicit x and y arguments because ## the default is different 
from levelplot.

vcl <- contourLines(x = seq_len(nrow(volcano)),

                   y = seq_len(ncol(volcano)),
                   z = volcano,
                   levels = c(172, 182))

levelplot(volcano, add.cl = vcl,
          panel = function(..., add.cl) {
              panel.levelplot(...)
              lapply(add.cl, panel.polygon, border = 'red')
          })


-Deepayan ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jennifer Barnes
PhD student: long range drought prediction 
Climate Extremes Group
Department of Space and Climate Physics
University College London
Holmbury St Mary 
Dorking, Surrey, RH5 6NT
Web: http://climate.mssl.ucl.ac.uk



More information about the R-help mailing list