如何在R中的同一绘图中绘制多组特征向量?

如何在R中的同一绘图中绘制多组特征向量?,r,pca,ggplot2,R,Pca,Ggplot2,下面是iris数据集的示例。我试图找到一种方法,在同一个图中,把每个物种在椭圆上的前两个特征向量一起画出来 data <- iris %>% nest() %>% mutate(pca = map(data, ~prcomp(.x[,-5], scale = TRUE)), scores = map(pca, ~data.frame(.x$x))) %>% select(-pca) %>% unnest() ggplot(data

下面是iris数据集的示例。我试图找到一种方法,在同一个图中,把每个物种在椭圆上的前两个特征向量一起画出来

data <- iris %>%
  nest() %>%
  mutate(pca = map(data, ~prcomp(.x[,-5], scale = TRUE)),
         scores = map(pca, ~data.frame(.x$x))) %>%
  select(-pca) %>%
  unnest()

ggplot(data, aes(x = PC1, y = PC2, col = Species)) +
  stat_ellipse()
数据%
嵌套()%>%
变异(pca=map(数据,~prcomp(.x[,-5],比例=TRUE)),
分数=映射(pca,~data.frame(.x$x))%>%
选择(-pca)%>%
unnest()
ggplot(数据,aes(x=PC1,y=PC2,col=物种))+
统计椭圆()
我试着提取每个物种的特征向量,但我认为旋转和截距都是错误的。失败的尝试:

eigens <- iris %>%
  group_by(Species) %>%
  nest() %>%
  mutate(eigen = map(data, ~eigen(cor(.x))),
         slope1 = map_dbl(eigen, ~.x$vectors[1,1]/.x$vectors[2,1]),
         slope2 = map_dbl(eigen, ~.x$vectors[1,1]/.x$vectors[1,2]))

ggplot(data, aes(x = PC1, y = PC2, col = Species)) +
  stat_ellipse() +
  geom_abline(data = eigens, aes(intercept = 0, slope = slope1, color = Species)) +
  geom_abline(data = eigens, aes(intercept = 0, slope = slope2, color = Species)) 
eigens%
组别(种类)%>%
嵌套()%>%
变异(本征=映射(数据,~eigen(cor(.x))),
slope1=map_dbl(本征,~.x$向量[1,1]/.x$向量[2,1]),
slope2=map_dbl(本征,~.x$向量[1,1]/.x$向量[1,2]))
ggplot(数据,aes(x=PC1,y=PC2,col=物种))+
统计椭圆()+
geom_abline(数据=本征值,aes(截距=0,斜率=斜率1,颜色=物种))+
geom_abline(数据=本征值,aes(截距=0,斜率=斜率2,颜色=物种))

这看起来更像是一个编程问题,所以这里没有主题。这看起来更像是一个编程问题,所以这里没有主题。