我对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)
我想用彩色双标记(研究和疾病)创建这样的情节。我该怎么办?
答案 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。
答案 1 :(得分:1)
实际上,您可以在默认的plot
命令中直接执行此操作,该命令可以将pch
和col
参数作为向量。使用:
with(data, plot(mds, col = as.numeric(Study), pch = as.numeric(Disease), asp = 1)
当您绘制asp = 1
结果时,必须使用cmdscale
:两个轴必须同样缩放。您还可以为更好的轴标签添加xlab
和ylab
参数。有关添加图例和选择绘图字符和颜色的信息,请参阅其他回复。