Bonjour,
>Sur ADE dans R, je souhaite utiliser s.label et s.arrow en indiquant les
>labels des points mais SANS avoir le joli petit cadre autour du label.
On peut utiliser la fonction text
doit xy la data frame contenant les coordonnées des points à représenter
par s.label:
xy<-cbind.data.frame(x=runif(25), y=runif(25))
opar<-par(mar=c(0,0,0,0))
s.label(xy, cpo=0, clab=0)
text(xy, labels=row.names(xy))
par(opar)
Pour s.arrow, il faut modifier la fonction scatterutil.eti.circ appelée par
la fonction
(pour que les labels ne tombent pas sur les flèches):
scatterutil.eti.circ<-function (x, y, label, clabel, origin = c(0, 0))
{
if (is.null(label))
return(invisible())
if (any(is.na(label)))
return(invisible())
if (any(label == ""))
return(invisible())
xref <- x - origin[1]
yref <- y - origin[2]
for (i in 1:(length(x))) {
cha <- as.character(label[i])
cha <- paste(" ", cha, " ", sep = "")
cex0 <- par("cex") * clabel
xh <- strwidth(cha, cex = cex0)
yh <- strheight(cha, cex = cex0) * 5/6
if ((xref[i] > yref[i]) & (xref[i] > -yref[i])) {
x1 <- x[i] + xh/2
y1 <- y[i]
}
else if ((xref[i] > yref[i]) & (xref[i] <= (-yref[i]))) {
x1 <- x[i]
y1 <- y[i] - yh
}
else if ((xref[i] <= yref[i]) & (xref[i] <= (-yref[i]))) {
x1 <- x[i] - xh/2
y1 <- y[i]
}
else if ((xref[i] <= yref[i]) & (xref[i] > (-yref[i]))) {
x1 <- x[i]
y1 <- y[i] + yh
}
text(x1, y1, cha, cex = cex0)
}
}
s.arrow(xy)
Cordialement,
Clément.
======================================
Clément CALENGE
Doctorant / PhD.
UMR CNRS 5558 - Equipe "Ecologie Statistique"
Laboratoire de Biométrie et Biologie Evolutive
Université Claude Bernard Lyon 1
43, Boulevard du 11 novembre 1918
69622 Villeurbanne Cedex
FRANCE
tel. (+33) 04.72.43.27.57
fax. (+33) 04.72.43.13.88
This archive was generated by hypermail 2b30 : Tue Sep 07 2004 - 13:45:25 MEST