所以我做了一个 PCA 分析,我通常用 ggplot2 绘制结果,但我最近才发现 ggbiplot 可以显示带有变量的箭头。
ggbiplot 似乎工作正常,尽管它显示了一些问题(例如无法更改点大小,因此我在 MWE 中所做的整个层的事情)。
我现在面临的问题是,虽然 ggplot2 绘图将绘图宽度调整到绘图区域,但 ggbiplot 不会。使用我的数据,ggbiplot 非常窄并且留下非常宽的垂直边距,即使它扩展了与 ggplot2 图相同的 x 轴间隔(实际上,它是相同的图)。
我在这里使用虹膜数据,所以我必须使 png 宽度特别大,这样我面临的问题就变得很明显了。请检查以下 MWE:
data(iris)
head(iris)
pca.obj <- prcomp(iris[,1:4],center=TRUE,scale.=TRUE)
pca.df <- data.frame(Species=iris$Species, as.data.frame(pca.obj$x))
rownames(pca.df) <- NULL
png(filename="test1.png", height=500, width=1000)
print(#or ggsave()
ggplot(pca.df, aes(x=PC1, y=PC2)) +
geom_point(aes(color=Species), cex=3)
)
dev.off()
P <- ggbiplot(pca.obj,
obs.scale = 1,
var.scale=1,
ellipse=T,
circle=F,
varname.size=3,
groups=iris$Species, #no need for coloring, I'm making the points invisible
alpha=0) #invisible points, I add them below
P$layers <- c(geom_point(aes(color=iris$Species), cex=3), P$layers) #add geom_point in a layer underneath (only way I have to change the size of the points in ggbiplot)
png(filename="test2.png", height=500, width=1000)
print(#or ggsave()
P
)
dev.off()
此代码生成以下两个图像。
看看 ggplot2 如何将绘图宽度调整到绘图区域,而 ggbiplot 不会。使用我的数据,ggbiplot 图非常窄,垂直边距很大。
我的问题是:如何让 ggbiplot 表现得像 ggplot2?如何使用 ggbiplot 将绘图宽度调整为所需的绘图区域(png 大小)?谢谢!