biplot <- macro(" @X <- $1 @rlabs <- $2 @clabs <- $3 @X <- @X - tabs(@X,mean:T)' @p <- ncols(@X) @s <- svd(@X,all:T) @p1 <- @s$leftvectors[,1]*@s$values[1] @p2 <- @s$leftvectors[,2]*@s$values[2] @v1 <- @s$rightvectors[,1] @v2 <- @s$rightvectors[,2] @f <- vector(max(@p1)/max(@v1),max(@p2)/max(@v2),min(@p1)/min(@v1),min(@p2)/min(@v2)) @f <- @f[@f > 0] @f <- min(@f) @v1 <- @v1*@f @v2 <- @v2*@f @blank <- \" \" chplot(@p1,@p2,@rlabs,xlab:@blank,ylab:@blank,show:F) for(@i,run(@p)) { addpoints(@v1[@i],@v2[@i],symbol:@clabs[@i],show:F) addlines(vector(0,@v1[@i]),vector(0,@v2[@i]),show:F) ;; } showplot(xmin:?,ymin:?,xmax:?,ymax:?,$K)",dollars:T)