R Project: постройте трехмерную сетку (сетку) с помощью пакета Plot3D.

Я пытаюсь построить трехмерную сетку с кубовидными элементами (прозрачными с использованием пакета R Plot3D, однако я не могу найти хорошего решения. Есть предложения? Цель состоит в том, чтобы добавить трехмерную сетку в трехмерную диаграмму рассеяния с помощью функции scatter3D.

1 ответ

Я написал следующий код, который решает мою проблему. Я использовал функцию lines3D пакета Plot3D. Буду признателен, если вы предоставите более элегантный способ избежать петель.

      library(plot3D)
library(plot3Drgl)
x_grid <- y_grid  <- seq(0 , 1000, 200)
z_grid<-seq(0 , 500, 100)
# plot a 3-D mesh

M <- mesh(x_grid, y_grid, z_grid)
# plot result

dev.new()
scatter3D(M$x, M$y, M$z, pch = "-", cex = 0.1, colkey = FALSE,ticktype = "detailed")

for(i in 1:length(z_grid)){
for(j in 1:length(y_grid)){
lines3D(x = c(min(x_grid), max(x_grid)), y = c(y_grid[j],y_grid[j]), z = c(z_grid[i],z_grid[i]),colkey = FALSE,add=TRUE)}}

for(i in 1:length(x_grid)){
for(j in 1:length(y_grid)){
lines3D(x = c(x_grid[i],x_grid[i]), y = c(y_grid[j],y_grid[j]), z = c(min(z_grid), max(z_grid)),colkey = FALSE,add=TRUE)}}

for(i in 1:length(x_grid)){
for(j in 1:length(z_grid)){
lines3D(x = c(x_grid[i],x_grid[i]), y = c(min(y_grid), max(y_grid)), z = c(z_grid[j],z_grid[j]),colkey = FALSE,add=TRUE)}}

plotrgl(new = TRUE)

Другие вопросы по тегам