[R] How to plot arrows for a PLS plot with ggplot2?

Josep Maria Campanera Alsina campaxic at gmail.com
Fri Dec 19 18:32:14 CET 2008


Dear community,
I'd like to build a PLS plot with scores and loadings, sometimes
called "biplot". Like in biplot.mvr {pls} but using ggplot2.

1. Scores plot. No problem!
ggplot(data=data1,aes(x=plsr1,y=plsr2))+geom_point(aes(colour=solenergy,shape=type))+geom_text(aes(label=res,size=1,hjust=0,vjust=0))

where,
> str(data1)
'data.frame':   295 obs. of  5 variables:
 $ plsr1    : num  1.60 1.49 1.42 1.17 1.35 ...
 $ plsr2    : num  -1.822 -1.987 -0.758  0.172  0.421 ...
 $ res      : Factor w/ 18 levels "ARG","ASN","ASP",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ type     : Factor w/ 2 levels "Alfa_Helix","Beta_Sheet": 2 2 2 2 2 2 2 2 2 2

2. Loadings plot. Here it is where my struggle comes from with ggplot2.
The Loadings are in this dataset!
> str(data2)
'data.frame':   4 obs. of  9 variables:
 $ plsr1    : num   0.9522  0.2986 -0.0898  0.1561
 $ plsr2    : num   0.2287 -0.9686 -0.1017  0.0105
 $ xnew     : num  0 0 0 0
 $ ynew     : num  0 0 0 0

Aparently with plain R is fairly simple, although I cannot override to
the previous plot.
>plot(data2$plsr1,data2$plsr2)
>arrows(data2$xnew,data2$ynew,data2$plsr1,data2$plsr2,lwd=2,length = 0.2, angle = 30)

How to do that with ggplot2 and override it to the previous scores
plot? with geom_segment apparently you can do that, but how?

Anyone can give me a clue?

Thanks in advance and congratulations for ggplot2! It is great!

Josep Maria,

---------------------------------------------
Josep Maria Campanera Alsina
Professor Lector
Departament de Fisicoquímica
Facultat de Farmàcia
Universitat de Barcelona
Avgda Joan XXIII, s/n
08028 Barcelona · Catalonia · Spain
Tel: +34 93 4035985
Fax: +34 93 4035987
campanera at ub.edu



More information about the R-help mailing list