【问题标题】:How to colour code a PCA plot based on the data frame cell names?如何根据数据框单元格名称对 PCA 图进行颜色编码?
【发布时间】:2021-06-07 20:07:55
【问题描述】:
data.matrix <- matrix(nrow=100, ncol=10)
colnames(data.matrix) <- c(
  paste("wt", 1:5, sep=""),
  paste("ko", 1:5, sep=""))
rownames(data.matrix) <- paste("gene", 1:100, sep="")
for (i in 1:100) {
  wt.values <- rpois(5, lambda=sample(x=10:1000, size=1))
  ko.values <- rpois(5, lambda=sample(x=10:1000, size=1))
 
  data.matrix[i,] <- c(wt.values, ko.values)
}
head(data.matrix)
dim(data.matrix)

pca <- prcomp(t(data.matrix), scale=TRUE) 

intall.packages("ggplot2")
library(ggplot2)
 
pca.data <- data.frame(Sample=rownames(pca$x),
  X=pca$x[,1],
  Y=pca$x[,2])
pca.data
 
ggplot(data=pca.data, aes(x=X, y=Y, label=Sample)) +
  geom_text() +
  xlab(paste("PC1 - ", pca.var.per[1], "%", sep="")) +
  ylab(paste("PC2 - ", pca.var.per[2], "%", sep="")) +
  theme_bw() +
  ggtitle("My PCA Graph")

上面的代码给了我这个最终的 pca 图:

如何将 wt 和 ko 点变成彩色点? (即,将所有“wt”点更改为蓝点,将所有“ko”点更改为红点)

【问题讨论】:

    标签: r pca


    【解决方案1】:

    编辑:在我最初回答后问题发生了变化,请参阅底部以获取更新的答案。

    您可以使用substr() 获取Sample 的第二个字符,然后将其传递给col。这是一个例子:

    library(ggplot2)
    library(dplyr)
    
    example_data <- data.frame(
      Sample = c("A1.1", "H2.1", "F2.1", "B1.1", "C1.1", "S2.1", "J2.1", "K1.1"),
      X = rnorm(n = 8),
      Y = rnorm(n = 8)
    )
    
    
    example_data %>% 
      mutate(prop = substr(Sample, 2, 2)) %>% # Make a new column with the values
      ggplot(aes(x = X, y = Y, label = Sample, col = prop)) +
      geom_text() +
      xlab(paste("PC1 - ")) +
      xlab(paste("PC2 - ")) +
      scale_color_manual(values = c("1" = "blue", "2" = "red")) + # Assigns colour to values
      theme_bw() +
      theme(legend.position = "none") # Removes legend
    

    reprex package (v0.3.0) 于 2021-06-07 创建

    对于已编辑的问题,这里是如何获取分数而不是文本。只需将geom_text() 替换为geom_point()

    
    example_data %>% 
      mutate(prop = substr(Sample, 2, 2)) %>% # This is where the magic happens
      ggplot(aes(x = X, y = Y, label = Sample, col = prop)) +
      # geom_text() +
      geom_point() + # Will add points
      xlab(paste("PC1 - ")) +
      ylab(paste("PC2 - ")) +
      scale_color_manual(values = c("1" = "blue", "2" = "red")) +
      theme_bw() +
      theme(legend.position = "none") 
    

    reprex package (v0.3.0) 于 2021 年 6 月 7 日创建

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多