繁体   English   中英

R:使用 data.frame 信息为散点图上的点着色

[英]R: Using data.frame information to colour points on a scatter plot

我使用plot(data$pco$li[,1], data$pco$li[,2])生成了我的数据的散点图。 结果是 PCA 散射输出。 我现在想根据它的类别为散布上的每个点着色(每个点都是一个基因,我想根据它所属的染色体着色)。

我有一个文件,第一列中的基因和第二列中的染色体,并使用以下方法将其加载到 R 中:

geneLoc <- read.table(file = "~/Location/File.txt", header = FALSE, sep = "\t")
colnames(geneLoc) <- c("Gene", "Chromosome")

从这里我不知道如何使用此信息为散点图上的点着色。 我找到的最接近的答案在这里: Coloring scatter graph by type in r

但是,我的散点数据不是两列表的形式(因为它是执行 PCA 的名为 Treescape 的包的结果)。 因此,它采用这种格式:

          gene1    gene2    gene3    gene4    gene5    gene6    gene7    gene8    gene9
gene2  33.76389                                                                        
gene3  51.12729 47.74935                                                               
gene4  27.62245 31.38471 52.12485                                                      
gene5  33.92639 28.44293 53.74942 28.67054                                             
gene6  32.28002 26.57066 43.72642 29.54657 25.51470                                    
gene7  34.65545 30.08322 54.06478 30.59412 24.89980 27.00000                           
gene8  31.09662 27.44085 48.89785 27.49545 26.87006 24.59675 26.79552                  
gene9  36.20773 28.82707 50.94114 31.24100 24.53569 24.06242 25.41653 27.60435         
gene10 36.53765 28.75761 53.86093 30.46309 23.62202 25.00000 27.82086 28.87906 25.33772

因此,我不能简单地将第三个类别列添加到两列数据框中并使用它来为我的散点图着色。

您需要将数据转换为以下格式:

Var1      Var2      Value
gene1     gene2     33.76389
gene1     gene3     51.12729

然后,您可以轻松地附加第 4 列。 包 reshape2 有一个名为melt的函数,它可以解决这个问题。 首先,让我们生成一个与上面示例类似的矩阵:

mydata <- matrix(data=rnorm(81, 25, 10), ncol=9, nrow=9)
colnames(mydata) <- paste0("gene", 1:9)
rownames(mydata) <- paste0("gene", 2:10)
mydata[upper.tri(mydata, diag=T)] <- NA

现在我们可以使用 reshape2 将其转换为我上面描述的“长”格式:

library(reshape2)
meltdata <- melt(mydata)

您现在可以在meltdata 的右侧附加一列以进行绘图。 ggplot2 库擅长绘制以这种格式构建的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM