В R (rgl), как напечатать тени точек в plot3d? - PullRequest
0 голосов
/ 25 апреля 2018

В R, используя пакет rgl, я хотел бы добавить тени точек в plot3d(), как на рисунке ниже.

plot3d with shadows

Я добавил нижнюю сетку, используя grid3d(), но до сих пор не знаю, как добавить тени. Если я нанесу те же точки, меняя значение 3-й оси до минимального значения (-100 на изображении), площадь графика автоматически увеличивается, оставляя зазор между точками и сеткой. Есть ли лучший способ сделать это?

Я думаю, это было очевидно из вопроса, но вот пример кода:

library(rgl)
df <- data.frame(x=rnorm(100),
                 y=rnorm(100),
                 z=rnorm(100))
plot3d(df)
grid3d('z')

1 Ответ

0 голосов
/ 25 апреля 2018

Идея установить z в минимальное значение не удалась, потому что rgl делает ограничивающую область немного больше.Но вы можете взять значение z из таблицы и использовать его.Вы также можете указать rgl не расширять ограничивающую рамку, чтобы включить новые точки.Этот код делает обе вещи:

library(rgl)
df <- data.frame(x=rnorm(100),
                 y=rnorm(100),
                 z=rnorm(100))
plot3d(df)
id <- grid3d('z')                            # Get id values for grid
gridz <- rgl.attrib(id[1], "vertices")[1,3]  # Use the first z value
save <- par3d(ignoreExtent = TRUE)           # Ignore points for bbox
with(df, points3d(x, y, gridz, col = "gray"))# Plot the "shadows"
par3d(save)                                  # Restore bbox status

Вот что я получаю:

enter image description here

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