This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Error in ggbiplot
'#plot PCA using all genes
require(genefilter)
require(calibrate)
require(RColorBrewer)
library(ggplot2)
install.packages("ggfortify")
library(ggfortify)
pca=prcomp(t(count_matrix))
pc1var <- round(summary(pca)$importance[2,1]*100, digits=1)
pc2var <- round(summary(pca)$importance[2,2]*100, digits=1)
pc1lab <- paste0("PC1 (",as.character(pc1var),"%)")
pc2lab <- paste0("PC2 (",as.character(pc2var),"%)")
pdf(pdfname)
pdfname <-paste(direc,method,"PCA_FPKM_all_genes.pdf",sep="")
autoplot(pca,data=comparison,colour='Group',xlab=pc1lab,ylab=pc2lab)+geom_text_repel(aes_string(x = "PC1", y = "PC2", label = "Name"))
dev.off()

All lines execute seemingly without error but

autoplot(pca,data=comparison,colour='Group',xlab=pc1lab,ylab=pc2lab)+geom_text_repel(aes_string(x = "PC1", y = "PC2", label = "Name"))

returns the following error:

Error in ggbiplot(plot.data = plot.data, loadings.data = loadings.data,  :   formal argument "xlab" matched by multiple actual arguments

checking the value of xlab returns

> xlab

function (label) 
{
    labs(x = label)
}
<environment: namespace:ggplot2>

Could someone please help me debug this?

Thanks!

I'm running this on RStudio 3.3.1

rstudio rnaseq pcaplot

1 answer

These ggplot2 wrapper functions rarely work because the functioning of ggplot2 is more complex than other R functions. I think that you should aim to spend at least 1 full working day looking over the basics of ggplot2 so that you don't have to use these wrapper. Just my recommendation from experience.

I was able to plot a PCA bi-plot using the following:

count_matrix <- replicate(10, rnorm(20)) 
colnames(count_matrix) <- paste("sample", c(1:ncol(count_matrix)), sep="")

require(genefilter)
require(calibrate)
require(RColorBrewer)
library(ggplot2)
library(ggfortify)
require(ggrepel)

pca <- prcomp(t(count_matrix))
pc1var <- round(summary(pca)$importance[2,1]*100, digits=1)
pc2var <- round(summary(pca)$importance[2,2]*100, digits=1)
pc1lab <- paste0("PC1 (",as.character(pc1var),"%)")
pc2lab <- paste0("PC2 (",as.character(pc2var),"%)")
autoplot(pca, data=pca, xlab=pc1lab, ylab=pc2lab) + geom_text_repel(aes_string(x="PC1", y="PC2", label="colnames(count_matrix)"))

pca
free image hosting

Thanks, Kevin! Let me try this and see.

Log in to answer this question.