Графики осей поверхности plot_ly не охватывают весь диапазон значений - PullRequest
2 голосов
/ 24 апреля 2019

Я пытаюсь создать трехмерный график поверхности, используя plot_ly, вот так:

rm(list=ls())
set.seed(42)
x_val <- seq(-2,2,0.1)
y_val <- seq(0,1,0.1)

zz <- matrix(NA, nrow = length(x_val), ncol = length(y_val))
for(i in 1:length(x_val)){
  for(j in 1:length(y_val)){
    zz[i,j] <- rnorm(1, x_val[i], y_val[j]+0.01)
  }
}

plot_ly(x = x_val, y = y_val, z = zz, type = "surface") 

Полученные графики выглядят так:

enter image description here

Как видите, x_axis имеет диапазон от -2 до 2, но отображаются только значения от -1 до -2.

Как можно отобразить результаты для полного диапазона x-значения?

Как и предлагалось в комментариях, я пытался реализовать решение этого вопроса ( сюжетно трехмерная поверхность - сменить куб на прямоугольное пространство ).

Однако, используя

plot_ly(x = x_val, y = y_val, z = zz, type = "surface")  %>% 
  layout(
    scene = list(
      xaxis = list(range = c(-2,2)),
      yaxis = list(range = c(0,1)),
      zaxis = list(range = range(zz)),
      aspectratio = list(x = 2, y = 1, z = 0.4))
  )

приводит к этому изображению с той же проблемой:

enter image description here

1 Ответ

1 голос
/ 26 апреля 2019

Ось X относится к столбцам матрицы zz.
Длина вашего x_val вектора равна 41, а количество столбцов zz равно 11.
Таким образом, для правильной визуализации матрицу zz необходимо перенести:

plot_ly(x = x_val, y = y_val, z = t(zz), type = "surface") 

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...