Создание каркасного графика из x, y, z data.frame - PullRequest
3 голосов
/ 14 сентября 2011

У меня есть data.frame из точек x / y / z.Я знаю, как создать трехмерную диаграмму рассеяния, используя пакет rgl, но я бы хотел соединить каждую точку диаграммы рассеяния для создания каркасного или поверхностного графика.

Этот код возвращает диаграмму рассеяния

library(rgl)
Data <- expand.grid(x=seq(0,10),y=seq(0,10))
Data$z <- Data$x^2+Data$y^2
plot3d(Data)

Хотя этот код возвращает пустой график:

plot3d(Data,type='wire')

Я могу создать нужный график с решеткой:

library(lattice)
wireframe(z~x+y,Data)

Я даже могу повернуть его:

library(TeachingDemos)
rotate.wireframe(z~x+y,Data)

Но я предпочитаю rgl, а не lattice, потому что он рендерит намного быстрее и позволяет вращать график с помощью мыши.

Как правильно создать каркасный график в rgl

1 Ответ

6 голосов
/ 15 сентября 2011

Функция построения чертежа поверхности в rgl - это persp3d и, как и base :: persp, ей нужна матрица в качестве входных данных для аргумента z

zmat <- matrix(Data$z, 11,11)
persp3d(x=seq(0,10), y=seq(0,10), z=zmat)

Я немного раскрутил эту графику, прежде чем захватить ееЯ использую программу захвата экрана: Screenshot

...