R)创建双标MDS图

时间:2013-12-17 15:44:28

标签: r plot

我对R.全新 我有预处理和组合的表达谱数据。看起来像这样(“exp.txt”)

       STUDY_1_CANCER_1   STUDY_1_CON_1   STUDY_2_CANCER_1  STUDY_2_CANCER_2
P53    1.111              1.22             1.3               1.4
.....

另外,我创建了表型数据。看起来这个(“pheno.txt”)

Sample               Disease        Study
STUDY_1_CANCER_1     Cancer         GSE1
STUDY_1_CON_1        Normal         GSE1
STUDY_2_CANCER_1     Cancer         GSE2
STUDY_2_CON_1        Normal         GSE2

在这里,我尝试使用经典的cmdscale命令制作MDS图。

data=read.table("exp.txt", row.names=1, header=T)
DATA=as.matrix(data)
pc=cor(DATA, method="p")
mds=cmdscale(as.dist(1-pc),2)
plot(mds)

enter image description here

我想用彩色双标记(研究和疾病)创建这样的情节。我该怎么办?

2 个答案:

答案 0 :(得分:1)

首先创建一个空图,然后添加具有指定颜色/形状的点。

以下是一个例子:

require(vegan)
data(dune)
data(dune.env)

mds <- cmdscale(vegdist(dune, method='bray'))


# set colors and shapes
cols = c('red', 'blue', 'black', 'steelblue')
shps = c(15, 16, 17)
# empty plot
plot(mds, type = 'n')
# add points
points(mds, col = cols[dune.env$Management], pch = shps[dune.env$Use])
# add legend
legend('topright', col=cols, legend=levels(dune.env$Management), pch = 16, cex = 0.7)
legend('bottomright', legend=levels(dune.env$Use), pch = shps, cex = 0.7)

请注意,因子在内部编码为整数,这在这里很有用。

> levels(dune.env$Management)
[1] "BF" "HF" "NM" "SF"

所以

cols[dune.env$Management]

将首先输入cols作为第一个因素级别。 Similariy为不同的形状。

最后添加图例。当然这个情节仍需要一些抛光,但这就是要走的路......

BTW:Gavin Simpson关于定制排序图有一个很好的blogpost

enter image description here

答案 1 :(得分:1)

实际上,您可以在默认的plot命令中直接执行此操作,该命令可以将pchcol参数作为向量。使用:

with(data, plot(mds, col = as.numeric(Study), pch = as.numeric(Disease), asp = 1)

当您绘制asp = 1结果时,必须使用cmdscale:两个轴必须同样缩放。您还可以为更好的轴标签添加xlabylab参数。有关添加图例和选择绘图字符和颜色的信息,请参阅其他回复。