我使用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")
从这里我不知道如何使用此信息为散点图上的点着色。我找到的最接近的答案是:Colouring scatter graph by type in r
但是,我的散点数据不是两列表的形式(因为它是一个名为Treescape的包导致PCA的结果)。因此,采用以下格式:
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
因此,我不能简单地将第三类别列添加到两列数据框中,并使用它来为我的分散设置颜色。
答案 0 :(得分:1)
您需要将数据转换为以下格式:
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将其变成&#34; long&#34;我上面描述的格式:
library(reshape2)
meltdata <- melt(mydata)
您现在可以在meltdata右侧追加一列用于绘图。 ggplot2库擅长绘制以这种格式构建的数据。