You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ggplot绘制的PCA图中移除样本名称并添加散点

解决PCA图移除样本标签改用散点的问题

很简单,你只需要把绘图代码里的geom_text()替换成geom_point(),同时完善样本类型的分组逻辑(确保按类型上色正常)即可。以下是修改后的完整代码,我会标注关键改动点:

完整修改后的代码

library(ggplot2)
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)
## plot pc1 and pc2
plot(pca$x[,1], pca$x[,2])
## make a scree plot
pca.var <- pca$sdev^2
pca.var.per <- round(pca.var/sum(pca.var)*100, 1)
barplot(pca.var.per, main="Scree Plot", xlab="Principal Component", ylab="Percent Variation")
## 关键改动1:添加样本分组列,用于上色
pca.data <- data.frame(
  Sample=rownames(pca$x), 
  X=pca$x[,1], 
  Y=pca$x[,2],
  Group=substr(rownames(pca$x), 1, 2)  # 从样本名提取wt/ko分组
)
pca.data
## 关键改动2:用geom_point()替代geom_text(),并指定color=Group实现按类型上色
ggplot(data=pca.data, aes(x=X, y=Y, color=Group)) + 
  geom_point(size=3) +  # 散点显示样本,size参数可调整点的大小
  xlab(paste("PC1 - ", pca.var.per[1], "%", sep="")) + 
  ylab(paste("PC2 - ", pca.var.per[2], "%", sep="")) + 
  theme_bw() + 
  ggtitle("My PCA Graph") +
  theme(legend.position="right")  # 可选:调整图例位置

核心改动说明

  1. 移除样本标签:把原代码中的geom_text()替换为geom_point(),同时去掉aes里的label=Sample参数(因为不需要显示样本名称了)。
  2. 保留按类型上色:在pca.data中新增Group列,通过substr()从样本名中提取wt/ko类型,然后在ggplot的aes中指定color=Group,这样散点会自动按样本类型上色。
  3. 优化视觉效果:添加size=3参数可以让散点更醒目,你可以根据需求调整这个数值。

这样修改后,你的PCA图就会只显示代表样本的散点,直观展示不同类型样本的聚类情况,同时保留了按类型上色的效果。

内容的提问来源于stack exchange,提问作者Amon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 22:02:43