我想将ggplot2
和lattice
绘图对象组合在一起。由于这两个软件包都基于grid
,我想知道这是否可行?理想情况下,我会在ggplot2
中执行所有操作,但我无法绘制三维分散。
假设我有以下数据:
set.seed(1)
mdat <- data.frame(x = rnorm(100), y = rnorm(100), z = rnorm(100),
cluster = factor(sample(5, 100, TRUE)))
首先,我想在ggplot2
中创建一个散点图矩阵:
library(ggplot2)
library(gtools)
library(plyr)
cols <- c("x", "y", "z")
allS <- adply(combinations(3, 2, cols), 1, function(r)
data.frame(cluster = mdat$cluster,
var.x = r[1],
x = mdat[[r[1]]],
var.y = r[2],
y = mdat[[r[2]]]))
sc <- ggplot(allS, aes(x = x, y = y, color = cluster)) + geom_point() +
facet_grid(var.x ~ var.y)
到目前为止一切顺利。现在我想创建一个包含所有变量的lattice
三维散点图:
library(lattice)
sc3d <- cloud(z ~ x + y, data = mdat, groups = cluster)
现在我想将sc
和sc3d
合并到一个单独的地块中。我怎样才能做到这一点?也许在grid
或gridExtra
(pushViewport
,arrangeGrob
?)的帮助下?或者我可以在ggplot
中生成三维散点图吗?理想情况下,我希望在ggplot
的空面板中看到3d图,但我想这个问题要求太多,所以对于初学者我很乐意学习如何安排这两个并排的情节。
答案 0 :(得分:6)