contour
function
Given a matrix, and optionally the grid of X-axis and Y-axis values, it is possible to create a contour plot in R with the contour
function.
# Data
x <- -10:10
y <- -10:10
z <- sqrt(outer(x ^ 2, y ^ 2, "+"))
contour(x, y, z)
# You can also type, the following
# but the axes will be between 0 and 1
contour(z)
Number of levels
The nlevels
argument controls the number of contour levels to be drawn. The default value is 10.
# Data
x <- -10:10
y <- -10:10
z <- sqrt(outer(x ^ 2, y ^ 2, "+"))
contour(x, y, z,
nlevels = 20)
Contour lines
Note that you can change the line width and line style of the contours with lwd
and lty
, respectively, as well as the size for contour labels with labcex
, change the labels with labels
or remove them setting drawlabels = FALSE
.
# Data
x <- -10:10
y <- -10:10
z <- sqrt(outer(x ^ 2, y ^ 2, "+"))
contour(x, y, z,
labcex = 1.2, labels = 1:10,
lwd = 2, lty = 1)
Color palette
You can change the color of the contour lines with col
, passing a color or a color palette, such in the example below, which draws contours for the volcano
data set.
# Color palette
cols <- hcl.colors(10, "YlOrRd")
contour(volcano,
col = cols)
Overlay contour over a scatter plot
If you want to overlay contour lines over a scatter plot you can use the kde2d
function from MASS
to calculate the kernel density estimate of the variables as shown in the example below. Recall to set add = TRUE
inside contour
.
# install.packages("MASS")
library(MASS)
# Data
x <- rnorm(500)
y <- rnorm(500)
z <- kde2d(x, y, n = 50)
plot(x, y, pch = 19)
contour(z, lwd = 2, add = TRUE,
col = hcl.colors(10, "Spectral"))
filled.contour
function
A similar function to contour
is filled.contour
, which fills the areas between the contour lines. The function behaves almost the same as the function from the previous section.
filled.contour(volcano)
Number of levels
In this function you can also specify the number of levels with nlevels
.
filled.contour(volcano,
nlevels = 10)
Color palette
The color palette can be set with color.palette
or specifying a vector of colors with col
.
filled.contour(volcano,
color.palette = terrain.colors)
Filled contour with lines
The plot.axes
function can be used to add a contour over the filled contour plot, as shown in the following example.
filled.contour(volcano, plot.axes = {
axis(1)
axis(2)
contour(volcano, add = TRUE, lwd = 2)
}
)
See also