Gráficos en 3D: la función persp()

La función persp() permite construir gráficos en 3D. En particular, permite representar funciones matemáticas con facilidad. A modo de ejemplo, en esta sección mostraremos como construir el siguiente gráfico, un paraboloide de ecuación \(z=x^{2}+y^{2}\)



La información que se muestra a continuación puede ampliarse consultando help(persp) y demo(persp):

  1. En primer lugar construimos sendas secuencias de valores en los que se mueven las variables x e y, que constituirán la base sobre la que se construye la gráfica:
x=seq(-3,3,length=100)
y=seq(-3,3,length=100)



  1. Construimos la función encargada de calcular la coordenada del paraboloide correspondiente a cada punto (x,y) de la base:
parabola=function(x,y) x^2+y^2



  1. Aplicamos dicha función a todos los puntos de la malla definida por las secuencias x e y anteriores:
z=outer(x, y, parabola)



  1. Utilizamos la función persp(x,y,z) para dibujar los puntos (x,y,z) así calculados.
persp(x,y,z)



Giros

Podemos girar la figura en sentido vertical (especificando el ángulo phi) o de izquierda a derecha (especificando el ángulo theta):

persp(x,y,z, phi = 30)

persp(x,y,z,theta = 30)

persp(x,y,z,theta = 30, phi=30)



Color

persp(x,y,z,theta = 30, phi=30, col="orange")



Modificación de la relación de aspecto

La relación de aspecto puede modificarse encogiendo la figura en el eje z mediante el parámetro expand (en un factor entre 0 y 1):

persp(x,y,z,expand = 0.5,theta = 30, phi=30, col="orange")



Títulos y subtítulos

Para añadir título y subtítulo al gráfico utilizamos las opcionesmain y sub respectivamente. En nuestro caso queremos que el subtítulo recoja la expresión matemática del paraboloide, lo que podemos conseguir mediante la función expression():

ecuacionParab <- expression(z == x^2 + y^2)
persp(x,y,z,theta = 30, phi = 30,expand=0.5, col = "orange",
      main="Paraboloide", sub=ecuacionParab, col.main="blue")



Escala

Por defecto el parámetro scale está activado, por lo que las variables x, y y z se reescalan por separado. Al declarar dicho parámetro como FALSE, las variables se reescalan conservando la relación de aspecto original:

persp(x,y,z,theta = 30, phi = 30, expand=0.5, col = "orange",
      main="Paraboloide", sub=ecuacionParab, scale=FALSE, col.main="blue")



Bordes

Mediante el parámetro border controlamos que la malla se dibuje sobre la superficie. Si se declara como NA, la malla no se dibuja:

persp(x,y,z,theta = 30, phi = 30,expand=0.5, col = "orange",
      main="Paraboloide", sub=ecuacionParab, scale=FALSE, border=NA, col.main="blue")



Iluminación

Mediante el parámetro shade podemos controlar el efecto de iluminación:

persp(x,y,z,theta = 30, phi = 30,expand=0.5, col = "darkolivegreen1", main="Paraboloide",
      sub=ecuacionParab, scale=FALSE, border=NA, shade=0.5, col.main="blue")



Curvas de nivel

Podemos mostrar curvas de nivel para datos espaciales utilizando las funciones image() y contour():

image(x,y,z)
contour(x,y,z,add=T)





© 2016 Angelo Santana, Carmen N. Hernández, Departamento de Matemáticas   ULPGC