2013-03-24 64 views
6

我想根据某些行索引在成对图中着色点。这里是我用来绘制一个变量与另一个变量的代码。成对图中的着色点

cases<-which(rownames(data_no_na) %in% colnames(tumor_data)) 
controls<-which(rownames(data_no_na) %in% colnames(control_data)) 

plot(y=range(pca[,1]),x=range(pca[,2]),type='n',xlab="Principle Component 2",ylab="Principle Component 1", main="Iterative Thresholding Sparse PCA") 

points(y=pca[cases,1], x=pca[cases,2], col = 'red') 
points(y=pca[controls,1], x=pca[controls,2], col = 'blue'); 

一个简单的对情节是这样的:

pairs(pca[,1:3]) 

编辑:例:

cases<-1:10 
controls<-11:20 

pca<-matrix(c(rnorm(3*10,0,1),rnorm(3*10,5,1)),nrow=20,ncol=3) 
+3

你应该给一个重复的例子。 – agstudy 2013-03-24 14:37:36

+0

这意味着我们需要查看您的真实数据或可以说明上述情节的一些虚拟数据的输出。如果你的数据不包含许多列,试着粘贴'dput(head(cases))'&'dput(head(controls))'的输出。 – 2013-03-24 14:47:27

+1

你好!请通过看看[**如何使一个伟大的可重复的例子**],使您的文章可重现(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-例如)为我们提供帮助。谢谢。 – Arun 2013-03-24 14:58:29

回答

17

像这样的事情?

cols <- character(nrow(iris)) 
cols[] <- "black" 

cols[iris$Species %in% c("setosa","versicolor")] <- "blue" 
cols[iris$Species == "virginica"] <- "red" 
pairs(iris,col=cols) 
+0

美丽的谢谢:) – bdeonovic 2013-03-24 16:47:02

+0

有没有办法做同样的形状?谢谢 – Yoav 2014-06-14 20:34:26

+0

是的,你可以做同样的形状。 – Roland 2014-06-15 19:29:25

0

我不知道如果@Roland的答案在一些版本的作品,但至少在我的Windows [R 3.4.2,它没有。

函数对需要many arguments。其中一些用于指示映射到对角线,上部和下部面板的功能。默认情况下,它使用图(点)功能。

此功能有一个参数bg用于指定采用它的标记的填充颜色,如pch = 21

此外,颜色映射可以用unclass更有效地完成。例如,有两个层次因子变量:

colors <- c('black', 'red')[unclass(factor_variable)] 

然后,这确实神奇:

pairs(data, bg=colors)