Итак, я делаю анализ PCA и обычно рисую результаты с помощью ggplot2, но недавно я обнаружил ggbiplot, который может показывать стрелки с переменными.
ggbiplot, кажется, работает нормально, хотя он показывает некоторые проблемы (например, невозможность изменить размер точки, следовательно, весь слой, который я делаю в MWE).
Проблема, с которой я столкнулся сейчас, заключается в том, что в то время как графики ggplot2 регулируют ширину графика в соответствии с областью построения, ggbiplot этого не делает. С моими данными график ggbiplot ужасно узок и оставляет ужасно широкие вертикальные поля, хотя он расширяет тот же интервал оси x, что и график ggplot2 (фактически это тот же график).
Здесь я использую данные 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 (участок слишком узкий для области построения):
Посмотрите, как, в то время как ggplot2 регулирует ширину графика в соответствии с областью графика, ggbiplot этого не делает. С моими данными график ggbiplot чрезвычайно узок и оставляет большие вертикальные поля.
Мой вопрос здесь: как заставить ggbiplot вести себя как ggplot2? Как настроить ширину графика в соответствии с желаемой областью построения (размер png) с помощью ggbiplot? Спасибо!
coord_fixed()
- у меня не установлен ggbiplot, и я не могу вспомнить, переопределит ли что-то вродеp + coord_cartesian()
текущее соотношение сторон. - person Marius   schedule 14.09.2017