Как добавить очки к двум графикам параллельно?(в R) - PullRequest
3 голосов
/ 13 декабря 2011

Я ищу способы добавления точек к трем различным графикам параллельно.

У меня есть три графика рассеяния с именами s3d1, s3d2 и s3d3 в одном окне

layout(matrix(c(1,2,1,3),2, 2, byrow = TRUE))
s3d1<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
s3d2<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
s3d3<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)

Если я попытаюсь добавить точки к s3d1,

s3d1$points3d(mtcars[,3],mtcars[,4],mtcars[,5],col="red")

Точки перейдут к s3d3, но не к s3d1.Чего мне не хватает?

Дополнительная информация: я получаю точки данных при запуске программы.Итак, мне нужно добавить баллы к каждому из этих графиков, когда я получу данные, специфичные для этого конкретного графика.

Обновление:

Пробная функция par() также

par(fig=c(0,0.65,0,1), new=TRUE)
s3d1<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
par(fig=c(0.7,1,0.5,1), new=TRUE)
s3d2<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
par(fig=c(0,0.65,0,1), new=TRUE)
s3d1$points3d(mtcars[,3],mtcars[,4],mtcars[,5],col="red")

s3d1$points3d не добавляет новые очки к s3d1 (и даже не до s3d2).Есть идеи?

1 Ответ

2 голосов
/ 13 декабря 2011

Если вы посмотрите на источник points3d(), просто попытавшись выполнить s3d1$points3d, вы увидите, что он просто добавляет точки к существующему графику, который, как предполагается, уже открыт. Другими словами, точки / график хранятся не в объектах s3d1,2,3, а просто в информации о преобразовании, необходимой для отображения в разных видах.

Так, чтобы делать то, что вы пытаетесь сделать, вам просто нужно использовать обычные команды графического устройства. Например, dev.new откроет новое окно графика, а dev.set может переключаться между активными. Вы можете сделать что-то вроде:

dev.new(); h1=dev.cur()
s3d1<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
dev.new(); h2=dev.cur()
s3d2<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
dev.new(); h3=dev.cur()
s3d3<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
dev.set(h1)
s3d1$points3d(mtcars[,3],mtcars[,4],mtcars[,5],col="red")

Также проверьте ?dev.new для получения дополнительной информации.

...