如何在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") # 可选:调整图例位置
核心改动说明
- 移除样本标签:把原代码中的
geom_text()替换为geom_point(),同时去掉aes里的label=Sample参数(因为不需要显示样本名称了)。 - 保留按类型上色:在
pca.data中新增Group列,通过substr()从样本名中提取wt/ko类型,然后在ggplot的aes中指定color=Group,这样散点会自动按样本类型上色。 - 优化视觉效果:添加
size=3参数可以让散点更醒目,你可以根据需求调整这个数值。
这样修改后,你的PCA图就会只显示代表样本的散点,直观展示不同类型样本的聚类情况,同时保留了按类型上色的效果。
内容的提问来源于stack exchange,提问作者Amon
相关产品推荐
相关产品推荐

