我尝试在主成分分析中使用箭头(我使用FactoMineR库的PCA函数):
# Generate random values for the data
data<-data.frame(runif(100,0,1),rnorm(100,2,9),runif(100,0,8),rnorm(100,10,25))
pca<-PCA(data,ncp=2,graph=F)
vPC1<-pca$var$coord[,1]
vPC2<-pca$var$coord[,2]
vlabs<-rownames(pca$var$coord)
vPCs<-data.frame(cbind(vPC1,vPC2))
rownames(vPCs)<-vlabs
colnames(vPCs)<-colnames(PCs)
circleFun<-function(center=c(0,0),diameter=1,npoints=100){
r=diameter/2
tt<-seq(0,2*pi,length.out = npoints)
xx<-center[1]+r*cos(tt)
yy<-center[2]+r*sin(tt)
return(data.frame(x=xx,y=yy))
}
dat<-circleFun(c(0,0),2.3,npoints=100)
ggplot(dat,aes(x,y))+
geom_path()+
geom_text(data=vPCs,aes(x=vPC1*1.1,y=vPC2*1.1,label=rownames(vPCs)),size=3)+
coord_fixed()+
xlab("PC1")+
ylab("PC2")+
geom_segment(data=vPCs,aes(x=0,y=0,xend=vPC1,yend=vPC2),arrow=arrow(length=unit(0.5,"picas")),color="grey30")
我获得了下一个错误:
Error in do.call("layer", list(mapping = mapping, data = data, stat = stat, :
could not find function "arrow"
我不明白我是否安装了包裹&#34; graphics&#34;包含函数&#34; arrow&#34;。
答案 0 :(得分:1)
Arrow现在位于网格包中,因此您只需加载网格库:
library(grid)
一些混淆可能是由于以前版本的ggplot
自动加载网格(使网格功能对用户可见/可访问);
现在它通过namespace
导入引用,所以如果你想使用网格函数(或查看他们的帮助页面),你需要显式加载网格。