#r #plot #graph #3d
Вопрос:
моя задача-построить график функции двух переменных f(x,y), где m-зрелость и колеблется от 1 до 15. Вот мой код:
f<-function(x,y)((x -y * ((1 - exp(-m / 4)) / (m / 4)) - 0.035 * ((1 - exp(-m / 4
)) / (m / 4) - exp(-m / 4))))
z <- outer(x, y, f)
persp(x, y, z)
open3d()
plot3d(f,xlab = "x", ylab = "y", zlab = "m", ylim = c(-1, 1), xlim = c(-1, 1), zlim = c(1, 15))
Кто-нибудь может сказать, где я допустил ошибку?
Ответ №1:
Вы не можете передать функцию в качестве аргумента plot3D
. Вместо этого передайте свою переменную x
y
и f(x,y)
. Вот простой воспроизводимый пример
set.seed(5)
x <- runif(100)
m <- 4
f<-function(x,y)((x -y * ((1 - exp(-m / 4)) / (m / 4)) - 0.035 * ((1 - exp(-m / 4
)) / (m / 4) - exp(-m / 4))))
z <- f(x,y)
library(rgl)
open3d()
plot3d(x,y,z,xlab = "x", ylab = "y", zlab = "m")
Которые дают вам
если вы еще type
один из символов для построения своих данных, посмотрите на type
аргумент plot3D
. По умолчанию установлено "p"
значение, которое означает «точки», но существуют методы для «линий», «сегментов», сферы ecc (см. ?plot3D
):
введите
для метода по умолчанию один символ, указывающий тип элемента для построения. Поддерживаемые типы: «p» для точек, » s » для сфер, «l» для линий, » h » для отрезков линий от z = 0 и «n» ни для чего. Для метода mesh3d один из «оттенков», «проводов» или «точек». Используется частичное сопоставление.
Комментарии:
1. Вы установили м Есть ли какой-нибудь способ отобразить функцию не в виде точек, а в виде сплошной части?
2. вы можете построить график a
plot3D
для каждого значенияm
, но я не думаю, что можно построить их все вместе. Что касается основной части, я редактирую свой ответ, чтобы включить возможности, предлагаемыеplot3D