错误:用3点计算椭圆的点数太少? - R.

时间:2018-04-19 23:25:21

标签: r plot ggplot2 pca ellipse

天儿真好。 我正在使用pca包绘制factoextra。每个因素我有3个点,并希望在每个因素周围画椭圆。但我收到错误Too few points to calculate an ellipse

可以使用ggplot2函数在stat_ellipse中的3个点左右绘制椭圆。我可以通过查看calculate_ellipse ggplot2中的else if (dfd < 3) {message("Too few points to calculate an ellipse") code来确认这一点。那么factoextrafviz_pca_ind中使用的椭圆函数是什么,它认为3点太少了?有没有办法可以强制它添加省略号?这个包具有我需要的特定功能,所以想坚持下去。感谢。

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

enter image description here

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。解决方案是使用ggforce包中的geom_mark_ellipse。可以在3点左右(甚至1点左右)创建椭圆。

因此,工作流程应如下:

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()

enter image description here