R/Contour Plots

From QERM Wiki
(Difference between revisions)
Jump to: navigation, search
(added more example code)
(Contour Plots)
 
(One intermediate revision by one user not shown)
Line 1: Line 1:
 
=Contour Plots=
 
=Contour Plots=
 +
'''''Update: the ".filled.contour" function function in R 2.15 and beyond solves many of the problems described below.'''''
  
 
[[Image:Filled_contour_bad.png | left | thumb | 300 px | Bad contour plot]]  
 
[[Image:Filled_contour_bad.png | left | thumb | 300 px | Bad contour plot]]  
Line 46: Line 47:
  
 
An example of how these are combined with the aid of "plt" is found in the following file from Carey:
 
An example of how these are combined with the aid of "plt" is found in the following file from Carey:
{{Rcode|Example 4 panel contour plot with one legend.R|Example 4 panel contour plot with one legend.R}}
+
{{Rcode|Example 4 panel contour plot with one legend.R|Example 4 panel contour plot with one legend.R}}.
  
 +
Here is a version of that same file, kindly modified by Steffen Uhlig to include more comments: {{Rcode|Example 4-panel v1a.R|Example 4-panel v1a.R}}. There are a variety of small differences, so it's probably worth looking at both files.
  
 
==See also==
 
==See also==

Latest revision as of 17:13, 3 July 2012

Contour Plots

Update: the ".filled.contour" function function in R 2.15 and beyond solves many of the problems described below.

Bad contour plot
Good contour plot


R has two built-in functions for contour plots, contour, and filled.contour. Examples of their use can be seen from the code below:

x <- 1:50
y <- 1:70
z <- matrix(expand.grid(x,y)$Var1^2 + expand.grid(x,y)$Var2^2,50,70)

# plain
contour(x,y,z) 

# adjusting levels
mylevels <- seq(0,7500,500) 
contour(x,y,z,levels=mylevels,xaxs='i',yaxs='i')

# filled contours
filled.contour(x,y,z,color.palette=heat.colors)
filled.contour(x,y,z,col=grey(seq(0,1,length=length(mylevels))))
# add this to line above and see bad match
contour(x,y,z,levels=mylevels,add=T)

However, it can be frustrating to realize that the way filled.contour was implemented does not allow removing the key or overplotting with lines and labels. To realize this, add the lines below to the code above to create the bad figure above left.

filled.contour(x,y,z,col=grey(seq(0,1,length=length(mylevels))))
# add this to line above and see bad match
contour(x,y,z,levels=mylevels,add=T)


A solution is to use the modified function, Rlogo.jpg filled.contour2.R, as follows to create the better figure above right.

# filled.contour function modified to not have key
filled.contour2(x,y,z,col=grey(seq(0.3,1,length=length(mylevels))))
# now we can successfully add lines and values
contour(x,y,z,levels=mylevels,add=T)


Better yet, Carey McGilliard and Bridget Ferris made further modifications to allow multiple filled contours per page and the addition of the legend on the side to makes figures like the one below. Rlogo.jpg filled.contour3.R Rlogo.jpg filled.legend.R

Good contour plot

An example of how these are combined with the aid of "plt" is found in the following file from Carey: Rlogo.jpg Example 4 panel contour plot with one legend.R.

Here is a version of that same file, kindly modified by Steffen Uhlig to include more comments: Rlogo.jpg Example 4-panel v1a.R. There are a variety of small differences, so it's probably worth looking at both files.

See also

R tips

Personal tools