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)
:
x=seq(-3,3,length=100)
y=seq(-3,3,length=100)
parabola=function(x,y) x^2+y^2
z=outer(x, y, parabola)
persp(x,y,z)
para dibujar los puntos (x,y,z) así calculados.persp(x,y,z)
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)
persp(x,y,z,theta = 30, phi=30, col="orange")
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")
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")
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")
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")
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")
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