"contours" no es un parámetro gráfico al utilizar persp() en el paquete rsm

Estoy tratando de implementar un complot 3D en R usando el rsm paquete persp() función. Me gustaría añadir líneas de contorno a la base de la parcela, por ejemplo: Dibuja una línea después de la prótesis usando rsm en R

El rsm documentación dice que esto debe ser posible:

En persp, las líneas de contorno se pueden añadir a través del argumento de contornos. Puede ser un booleano o un personaje o una lista. Si booleano y TRUE, las líneas de contorno negro predeterminadas se añaden a la superficie inferior de la caja

https://cran.r-project.org/web/packages/rsm/rsm.pdf

Cuando hago esto, obtengo una advertencia y no contornos, aunque la trama 3D genera muy bien: "Warning message: In persp.default(a, t, q, contours = ("top") : "contours" is not a graphical parameter

Pude hacer que este patrón funcione usando código aquí: ¿Hay una manera de crear una parcela 3d con contornos debajo de la trama en R?

Pero sería bueno saber por qué el rsm paquete no funciona (aparecer) como se anuncia, a menos que estoy haciendo algo mal?

Aquí está mi MWE:

library(rsm)

surface <- function(a, t){
  q <- (4*40)/(4*a^2 + 4*a*t^2 + t^4 + 4*40)
}

a <- seq(.00001, 5, length= 20)
t <- seq(.00001, 5, length= 20)
q <- outer(a, t, surface)

persp(a, t, q,
      contours=("top"))

persp(a, t, q,
      contours=T)

Pregunta hecha hace 3 años, 4 meses, 29 días - Por logicluminary3c42


2 Respuestas:

  • El error que estás experimentando se debe a que estás utilizando incorrectamente el argumento "contours" en la función persp() del paquete rsm. Este paquete no utiliza el argumento "contours" de la misma manera que la función base persp() en R.

    Para añadir líneas de contorno a la base de la parcela utilizando la función persp() del paquete rsm, necesitas utilizar la función contour() en conjunto con persp(). Aquí te muestro cómo puedes lograrlo:

    R
    library(rsm)
    
    surface <- function(a, t){
      q <- (440)/(4a^2 + 4at^2 + t^4 + 4*40)
    }
    
    a <- seq(.00001, 5, length= 20)
    t <- seq(.00001, 5, length= 20)
    q <- outer(a, t, surface)
    
    

    Crear la gráfica 3D sin contornos

    persp(a, t, q)

    Añadir líneas de contorno a la base de la parcela

    contour(a, t, q, add = TRUE, col = "blue")

    Este código generará una gráfica 3D con líneas de contorno en la base de la parcela. Al utilizar la función contour() en lugar del argumento "contours" en persp(), puedes lograr el resultado deseado. ¡Espero que esta solución te sea de ayuda!

    Respondida el Dec 18, 2020 a las 07:03 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • El parámetro contours en la función persp() del paquete rsm solo acepta valores booleanos (TRUE o FALSE). Cuando se especifica un valor de carácter como "top" o una lista, se produce el mensaje de advertencia que has mencionado.

    Para agregar líneas de contorno a la base de la parcela, debes establecer el parámetro contours en TRUE. Aquí tienes un ejemplo modificado de tu código que agrega correctamente las líneas de contorno a la base de la parcela:

    R
    library(rsm)
    
    surface <- function(a, t){
      q <- (440)/(4a^2 + 4at^2 + t^4 + 4*40)
    }
    
    a <- seq(.00001, 5, length= 20)
    t <- seq(.00001, 5, length= 20)
    q <- outer(a, t, surface)
    
    persp(a, t, q,
          contours = TRUE)
    

    Con este cambio, deberías ver las líneas de contorno agregadas a la base de la parcela 3D.

    Respondida el Dec 18, 2020 a las 07:07 - por Gemini

    Votos positivos: 0 | Votos negativos: 0