PCA ggplot2 中方差图的比例

Proportion of Variance plot inside a PCA ggplot2

如何使用 ggplot2 使用 dataIris.pca 中的信息创建方差比例图,并将其添加到主 ggplot 的右上角(主图)

library(data.table)
library(MASS)
library(ggplot2)
  
 
iris.pca <- prcomp(iris[,1:4], scale. = TRUE)
dataIris.pca  <- data.frame(summary(iris.pca)$importance) 
dat <- data.table(PC1=iris.pca$x[,1],PC2=iris.pca$x[,2],Species=  iris[,5])
dat <- dat[order(dat$Species),]

mainPlot <- ggplot(dat,aes(x=PC1,y=PC2)) + geom_point(size = 2, aes(color=Species))   
mainPlot

你可以试试这个(你必须玩这个位置):

library(data.table)
library(MASS)
library(ggplot2)
library(reshape2)
library(grid)

iris.pca <- prcomp(iris[,1:4], scale. = TRUE)
dataIris.pca  <- data.frame(summary(iris.pca)$importance) 
dat <- data.table(PC1=iris.pca$x[,1],PC2=iris.pca$x[,2],Species=  iris[,5])
dat <- dat[order(dat$Species),]

mainPlot <- ggplot(dat,aes(x=PC1,y=PC2)) + geom_point(size = 2, aes(color=Species))+
  scale_y_continuous(limits=c(NA,6))
mainPlot

#Prop variance
Prop <- as.data.frame(summary(iris.pca)[[6]])
Propf <- round(Prop[2,],3)
#Melt
dfmelt <- melt(Propf)
#New plot
plota <- ggplot(dfmelt,aes(x=variable,y=value,label=paste0(100*value,'%')))+
  geom_bar(stat='identity',color='black',fill='orange')+
  geom_text(position=position_dodge(width=0.9), vjust=-0.25,size=2)+
  xlab('PC')+ylab('Var')

mainPlot + annotation_custom(ggplotGrob(plota), xmin = 1.5, xmax = 3.65, ymin = 2.75, ymax = 6)