Vous pouvez positionner la légende clé manuellement dans la plupart des programmes de traçage. Par exemple, dans GNUPLOT, il est fait en utilisant Y a-t-il une bibliothèque de tracé, un script ou un simple algorithme qui positionne automatiquement la légende de telle sorte qu'il chevauche les données de l'intrigue au minimum? P>
Ce que je veux dire, c'est: Supposons que je trace la ligne Key Top Right Droite Code>. Dans ggplot2, il est fait comme celui-ci . p>
y = x code>. Un bon endroit pour la légende dans ce cas serait en haut à gauche ou en bas à droite. P>
3 Réponses :
Essayez ceci,
require(Hmisc) ?largest.empty
x<-rnorm(100) y<-rnorm(100) plot(x,y,main="Find the empty space",xlab="X",ylab="Y") es<-plotrix::emptyspace(x,y) # use a transparent background so that any overplotted points are shown plotrix::boxed.labels(es,labels="Here is the\nempty space",bg="transparent")
Un astuce rapide pour obtenir l'un des Test: EDIT "topleft" code>,
"towright" code>,
"de base" code> et
"bowrdight" :
auto.legend.pos <- function(x,y,xlim=NULL,ylim=NULL) {
if (dev.cur() > 1) {
p <- par('usr')
if (is.null(xlim)) xlim <- p[1:2]
if (is.null(ylim)) ylim <- p[3:4]
} else {
if (is.null(xlim)) xlim <- range(x, na.rm = TRUE)
if (is.null(ylim)) ylim <- range(y, na.rm = TRUE)
}
countIt <- function(a) {
tl <- sum(x <= xlim[1]*(1-a)+xlim[2]*a & y >= ylim[1]*a+ylim[2]*(1-a))
tr <- sum(x >= xlim[1]*a+xlim[2]*(1-a) & y >= ylim[1]*a+ylim[2]*(1-a))
bl <- sum(x <= xlim[1]*(1-a)+xlim[2]*a & y <= ylim[1]*(1-a)+ylim[2]*a)
br <- sum(x >= xlim[1]*a+xlim[2]*(1-a) & y <= ylim[1]*(1-a)+ylim[2]*a)
c(topleft=tl,topright=tr,bottomleft=bl,bottomright=br)
}
for (k in seq(0.5,0.1,by=-0.05)) {
a <- countIt(k)
if (sum(a==0)>0) break
}
names(a)[which(a==0)][1] # may delete "[1]"
}
plot(Sepal.Length~Petal.Length, data=iris, xlim=c(1,5), ylim=c(3.5,6))
auto.legend.pos(iris$Petal.Length, iris$Sepal.Length)
# [1] "bottomright"
plot(Sepal.Length~Petal.Length, data=iris)
auto.legend.pos(iris$Petal.Length, iris$Sepal.Length)
# [1] "topleft"
PAR ("USR") CODE> APRÈS
TRACE CODE> Retourne les extrêmes des coordonnées de l'utilisateur des régions de tracé: voir
? Par code>. Nous pouvons donc changer la fonction à: p>
Sera un peu désordonnée si vous avez plusieurs courbes pour tracer.
Dans R, je soupçonne que la réponse est non. Mais vous êtes plus susceptible d'obtenir les globes oculaires d'utilisateurs connectés à une balise [R].
En fait, je suis plus intéressé par une solution autonome (script ou algorithme que je vais mettre en œuvre) qui l'accomplira pour tout programme de traçage (mon arme de choix est
gnuplot code>)