所以我进行PCA分析,我通常用ggplot2绘制结果,但我最近发现了ggbiplot,它可以显示带变量的箭头。
ggbiplot似乎工作正常,虽然它显示了一些问题(比如改变点大小的不可能性,因此我在MWE中做的整个事情)。
我现在面临的问题是,虽然ggplot2绘图将绘图宽度调整到绘图区域,但ggbiplot没有。根据我的数据,ggbiplot非常窄,并留下了可怕的宽垂直边距,即使它扩展了与ggplot2图相同的x轴间隔(事实上,它是相同的图)。
我在这里使用 iris 数据,因此我必须使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大小)?谢谢!
答案 0 :(得分:1)
将ratio
中的coord_equal()
参数更改为小于1的某个值(ggbiplot()
中的默认值)并将其添加到您的图中。从功能描述:“y轴上的比率高于x轴上的单位的比率,反之亦然。”
P + coord_equal(ratio = 0.5)
Best,Markus