"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 paquetersm
. Este paquete no utiliza el argumento "contours" de la misma manera que la función basepersp()
en R.Para añadir líneas de contorno a la base de la parcela utilizando la función
persp()
del paquetersm
, necesitas utilizar la funcióncontour()
en conjunto conpersp()
. 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" enpersp()
, 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ónpersp()
del paquetersm
solo acepta valores booleanos (TRUE
oFALSE
). 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
enTRUE
. 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