Как построить 3D — график функции двух переменных в R

#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))
 

Но 3D grpah выглядит так:введите описание изображения здесь

Кто-нибудь может сказать, где я допустил ошибку?

Ответ №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