La función contour

Dada una matriz, y opcionalmente una rejilla de valores de los ejes X e Y, es posible crear un contour en R con la función contour.

# Datos
x <- -10:10
y <- -10:10
z <- sqrt(outer(x ^ 2, y ^ 2, "+"))

contour(x, y, z)

# También puedes escribir lo siguiente
# pero los ejes estarán entre 0 y 1
contour(z)

Función contour en R

Número de niveles

El argumento nlevels controla el número de niveles a ser dibujados. El valor por defecto es 10.

# Datos
x <- -10:10
y <- -10:10
z <- sqrt(outer(x ^ 2, y ^ 2, "+"))

contour(x, y, z,
        nlevels = 20) 

Número niveles del contour

Líneas de contorno

Ten en cuenta que puedes cambiar el ancho y tipo de línea del contour con lwd y lty, respectivamente, así como el tamaño de las etiquetas de los niveles con labcex, cambiar las etiquetas con labels o eliminarlas estableciendo drawlabels = FALSE.

# Datos
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) 

Personalizando las líneas del gráfico contour en R

Paleta de colores

Puedes personalizar el color de las curvas de nivel con el argumento col, pasando un color o una paleta de colores, como en el ejemplo siguiente, que dibuja el contour para el conjunto de datos volcano.

# Paleta de colores
cols <- hcl.colors(10, "YlOrRd")

contour(volcano,
        col = cols)

Paleta de colores del contour

Contour sobre un gráfico de dispersión

Si quieres agregar curvas de nivel sobre un gráfico de dispersión puedes usar la función kde2d de la librería MASS para calcular la estimación de la densidad tipo núcleo de las variables. Recuerda establecer add = TRUE dentro de contour.

# install.packages("MASS")
library(MASS)

# Datos
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"))

Gráfico de dispersion en R con curvas de nivel

La función filled.contour

La función filled.contour

Una función similar a contour es filled.contour, que colorea las áreas entre las curvas de nivel. La función se comporta casi de la misma manera que la función de la sección anterior.

filled.contour(volcano)

Número de niveles filled.contour

Número de niveles

En esta función también puedes especificar el número de niveles con nlevels.

filled.contour(volcano,
               nlevels = 10)

filled.contour paleta de colores

Paleta de colores

La paleta de colores se puede establecer con color.palette o especificando un vector de colores con col.

filled.contour(volcano,
               color.palette = terrain.colors)

filled.contour con curvas de nivel en R

filled.contour con curvas de nivel

La función plot.axes se puede utilizar para agregar curvas de nivel sobre el contour coloreado por áreas, tal y como se muestra en el siguiente ejemplo.

filled.contour(volcano, plot.axes = {
  axis(1)
  axis(2)
  contour(volcano, add = TRUE, lwd = 2)
  }
)

También te puede interesar