问题
G'day.
I am plotting a pca
with the factoextra
package. I have 3 points for each factor and would like to draw ellipses around each. But I am getting the error Too few points to calculate an ellipse
.
It is possible to draw ellipses around 3 points in ggplot2
with the stat_ellipse
function. I can confirm this by looking at the calculate_ellipse
code from ggplot2
that says else if (dfd < 3) {message("Too few points to calculate an ellipse")
. So what ellipse function is factoextra
using in fviz_pca_ind
that it considers 3 points too few? Is there a way I can force it to add ellipses? This package has specific features I need so would like to stick with it. Thanks.
library(factoextra)
data(iris)
iris2<-iris[c(1:3,51:53,101:103),] # 3 points for each factor
res.pca <- prcomp(iris2[, -5], scale = TRUE)
fviz_pca_ind(res.pca, label='none',alpha.ind = 1,
habillage=iris2$Species,
repel = TRUE,
addEllipses = TRUE,invisible='quali')+
theme(legend.position = 'bottom')+
coord_equal()
#Too few points to calculate an ellipse
#Too few points to calculate an ellipse
#Too few points to calculate an ellipse
回答1:
I've faced the same problem. The solution is to use geom_mark_ellipse
from ggforce package. It's possible to create an ellipse around 3 points (even around 1 point).
So, the workflow should be as follows:
library(factoextra)
library(ggforce)
data(iris)
iris2<-iris[c(1:3,51:53,101:103),] # 3 points for each factor
res.pca <- prcomp(iris2[, -5], scale = TRUE)
fviz_pca_ind(res.pca, label='none',alpha.ind = 1,
habillage=iris2$Species,
repel = TRUE,
# Don't use default Ellipses!!!!
# addEllipses = TRUE,
invisible='quali') +
# ADD ggforce's ellipses
ggforce::geom_mark_ellipse(aes(fill = Groups,
color = Groups)) +
theme(legend.position = 'bottom') +
coord_equal()
来源:https://stackoverflow.com/questions/49931681/error-too-few-points-to-calculate-an-ellipse-with-3-points-r