Skip to content

Commit 7a2393c

Browse files
committed
fix pca_biplot
1 parent 6714233 commit 7a2393c

File tree

1 file changed

+2
-21
lines changed

1 file changed

+2
-21
lines changed

R/PCA_plotfcns.R

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -277,29 +277,10 @@ setMethod(f="chart_plot",
277277
P=output_value(dobj,'loadings')
278278
Ev=output_value(dobj,'eigenvalues')
279279

280-
# eigenvalues were square rooted when training PCA
281-
Ev=Ev[,1]
282-
Ev=Ev^2
283-
284-
## unscale the scores
285-
#ev are the norms of scores
286-
Ts=as.matrix(Ts) %*% diag(1/Ev) # these are normalised scores
287-
288-
# scale scores and loadings by alpha
289-
Ts=Ts %*% diag(Ev^(1-opt$scale_factor))
290-
P=as.matrix(P) %*% diag(Ev^(opt$scale_factor))
291-
292-
# additionally scale the loadings
293-
sf=min(max(abs(Ts[,opt$components[1]]))/max(abs(P[,opt$components[1]])),
294-
max(abs(Ts[,opt$components[2]]))/max(abs(P[,opt$components[2]])))
295-
Ts=as.data.frame(Ts)
296-
297-
rownames(Ts)=rownames(dobj$scores) # fix dimnames for SE object
298-
colnames(Ts)=colnames(dobj$scores)
299-
dobj$scores$data=as.data.frame(Ts) # nb object not returned, so only temporary scaling
280+
sf = max(abs(Ts)) / max(abs(P)) * opt$scale_factor
300281

301282
# plot
302-
A=data.frame("x"=P[,opt$components[1]]*sf*0.8,"y"=P[,opt$components[2]]*sf*0.8)
283+
A=data.frame("x"=P[,opt$components[1]]*sf,"y"=P[,opt$components[2]]*sf)
303284
C=pca_scores_plot(points_to_label=obj$points_to_label,xcol=obj$components[1],ycol=obj$components[2],factor_name=obj$factor_name)
304285
out=chart_plot(C,dobj)
305286

0 commit comments

Comments
 (0)