【问题标题】:How to label a few selective samples in PCA plot如何在 PCA 图中标记一些选择性样本
【发布时间】:2020-07-17 20:56:29
【问题描述】:

我在 R 中使用 prcomp 创建了一个 PCA 图:

> input <- read_excel("input.xlsx")                                                          
> data<-input[,!names(input) %in% "gene"]
> data1<-t(as.matrix(data[-1])) %*% as.matrix(data[-1]) / ncol(data)
> res.pca <- prcomp(data1, scale = TRUE)
> par(cex=0.5)
> plot(res.pca$x[,1],res.pca$x[,2], xlab="PC1", ylab = "PC2", main = "PC1 / PC2 - plot") 

input.xlsx 文件如下所示:

gene    Sample1 Sample2     Sample3
A   13.932431   5.366284    6.93992
B   21.111017   0.662061    1.563687
C   26.471751   0.932416    1.673144
D   27.597507   36.591138   28.371248
E   35.324703   0           1.462438

我只想为几个样本添加标签。我能够使用以下方法为所有样本添加标签:

text(res.pca$x[,1], res.pca$x[,2], rownames(input), pos= 1 )

但是我有很多样本,PCA 点标签不清楚,所以我只想标记几个点。我想这样做是为了将此 PCA 图与另一个使用不同方法的相同样本的 PCA 图进行比较。

【问题讨论】:

  • 如果你想让标签不重叠,不妨看看这个问题的答案:stats.stackexchange.com/questions/16057/…
  • 我有几百个样本,它们的名字很长。它们不可能不重叠。有没有办法只标记一些。就像我想标记左侧点一样。

标签: r


【解决方案1】:

要在左侧标记几个点,试试:

Threshold = -30
LEFT = which(res.pca$x[,1] + res.pca$x[,2] < Threshold)
text(res.pca$x[LEFT,1], res.pca$x[LEFT,2], rownames(input)[LEFT], pos= 1 )

尝试使用Threshold 的几个不同值来更改标记的点数。

【讨论】:

  • 谢谢!有效。可以根据y轴做到低点吗?
  • 是的,您只需要一种方法来指定您想要的点。也许像BOTTOM = which(res.pca$x[,2] &lt; -30); text(res.pca$x[BOTTOM ,1], res.pca$x[BOTTOM ,2], rownames(input)[BOTTOM ], pos= 1 )
  • 成功了,谢谢!我想修改标签,因为其中一些标签仍然重叠。我想让它们更小,并把它们分得更远一些。我尝试使用 pos 和 cex 但它没有改变任何东西。
  • 有没有办法根据输入文件的名称对一些样本进行颜色编码?
  • 是的。你想给点或标签上色吗?
猜你喜欢
  • 2021-02-24
  • 1970-01-01
  • 2014-08-08
  • 2014-12-13
  • 1970-01-01
  • 2014-10-20
  • 2011-02-08
  • 2014-11-08
  • 2023-03-18
相关资源
最近更新 更多