在R中使用两组不同颜色/形状的散点图

在R中使用两组不同颜色/形状的散点图,r,matrix,scatter-plot,lattice,R,Matrix,Scatter Plot,Lattice,我目前正在使用R中的lattice包,使用splom函数创建散点图矩阵。“我的数据集”中有两个组,标记在两个不同的列中,例如: PC1 PC2 PC3 Group1 Group2 1 2 3 A X 1 2 3 B X 1 2 3 C X 1 2 3 D X 1 2 3 A Y 1 2 3 B Y 1 2 3 C Y 1 2 3 D

我目前正在使用R中的lattice包,使用splom函数创建散点图矩阵。“我的数据集”中有两个组,标记在两个不同的列中,例如:

PC1 PC2 PC3 Group1 Group2
1   2   3   A      X
1   2   3   B      X
1   2   3   C      X
1   2   3   D      X
1   2   3   A      Y
1   2   3   B      Y
1   2   3   C      Y
1   2   3   D      Y
1   2   3   A      Z
1   2   3   B      Z
1   2   3   C      Z
1   2   3   D      Z
我可以使用以下代码使splom函数为其中一个组使用不同的颜色和形状,但不能同时为两个组使用不同的颜色和形状:

splom(~pcVT[,1:3], data = pcVT, xlab = NULL, groups = Group1, pch = c(1,2,3),
col = super.sym$col[1:3], panel = panel.superpose, 
key = list(points = list(pch = c(1,2,3),col = super.sym$col[1:3]),text = list(mylabels)))
我怎样才能使用这两个组来表示颜色和形状,也就是说,我希望Group1基于颜色绘制,Group2基于形状绘制。或者,如果splom无法做到这一点,是否有一种使用gpplot2的好方法


非常感谢

您的示例不可复制,您的数据集也不太可用。 我又做了一个

下面是一个带有底图的解决方案:

d <- as.data.frame(princomp(iris[,1:4])$scores)
d$Group1 <- iris$Species
d$Group2 <- factor(sample(c("A","B","C"), 150, replace = TRUE))

mycols <- c("forestgreen", "gold", "dodgerblue")

x11(width = 16/2.54, height = 12/2.54)
pairs(d[,1:4], oma=c(3,3,6,3), 
      col = mycols[as.numeric(d$Group1)], pch = c(1:3)[as.numeric(d$Group2)], gap = 0)
legend("top", col = mycols, legend = levels(d$Group1), pch = 20, 
       xpd = NA, ncol = 3, bty = "n", inset = 0.01, pt.cex = 1.5)
legend("top", pch = 1:3, legend = levels(d$Group2), col = "black",
       xpd = NA, ncol = 3, bty = "n", inset = -0.03)
library(GGally)
ggpairs(data=d, mapping = aes(color = Group1, shape = Group2), 
        columns = 1:4, legend = c(2,1))