Я хотел бы построить трехмерную поверхность с помощью пакета plot_ly
в R
.
У меня есть три вектора, которые включают значения x, y и z, как показано ниже;
x <- rep(1,times=40) # 40 values
y <- rep(2,times=40)
z <- rep(10, times=40)
С точки зрения использования функции add_surface
, насколько я понимаю, мне нужна матрица значений z по координатам xy.
В противном случае это дает мне ошибку;
plot_ly(x = x, y = y, z = z) %>% add_surface()
Error: `z` must be a numeric matrix
Как я могу сделать матрицу z?
(здесь матрица z должна иметь 1600 (40 * 40) значений)
Добавлено больше подробностей; Я надеюсь, что эти добавленные строки прояснят мой вопрос
Я знаю, что функция interp
делает то же самое, что и в r, как получить трехмерную поверхность с широтой, долготой и z . Однако я не хочу использовать функцию interp
в моем случае, потому что она сглаживает каким-либо образом (если я правильно понимаю).
В моем случае значения z - это данные, предсказанные по модели GAM, как показано в примере ниже;
gam_fit <- gam(y~ s(x),data=df)
gam_pred <- predict_gam(gamm_fit)
x <- gam_pred$x
y <- gam_pred$y
z <- gam_pred$fit