2013-06-20 2 views
11

Используя 2d-матрицу в R, как я могу создать трехмерный поверхностный график, где столбцы = x, rows = y, а значения - высоты в z?3D-график поверхности из 2D-матрицы

В приведенном ниже примере значения x будут равны 1: 5, значение y будет 1: 5, а числа будут представлять значения высоты/значения в z.

> m<-matrix(rnorm(25),nrow=5,ncol=5) 
> m 
      [,1]  [,2]  [,3]  [,4]  [,5] 
[1,] -1.495513045 0.8000040 -1.1499261 1.65661138 0.8140510 
[2,] -1.150018195 -0.7582933 0.8306922 0.16026908 0.3913198 
[3,] -0.852609406 0.5525621 0.3585986 -0.45054768 -1.2259927 
[4,] -0.001926297 -0.5857351 2.1518281 0.03192463 0.2065039 
[5,] -1.641128610 0.4333973 -1.0616628 -0.92143426 -0.9598991 

ответ

10

Пакет rgl поможет вам начать ...

require(rgl) 
# open renderer 
open3d() 
# plot surface 
rgl.surface(1:10 , 1:10 , runif(100)) 
# Export to png 
rgl.snapshot("sample.png" , fmt="png", top=TRUE) 

enter image description here

3

Чтобы получить 3D поверхность участка матрицы 2D, содержащей Z-значения, попробуйте:

require(plot3D) 

persp3D(z = TheMatrix2D, theta = 120) 

Используйте theta для регулировки угла обзора. С моим данным, я получаю следующий сюжет:

enter image description here

+0

это кажется как лучший синтаксис (так как он принимает матрицу в качестве входных данных), и имеет лучшие параметры по умолчанию. – Paul