Ajuster l'espacement entre le texte, horizontal légende
J'ai un terrain avec une horizontale légende:
legend("bottomleft", inset = c(0, -0.3), bty = "n",
x.intersp=0, xjust=0,yjust=0,
legend=c("AAPL", "Information Technology",
"Technology Hardware and Equipment", "S&P 500"),
col=c("black", "red", "blue3", "olivedrab3"),
lwd=2, cex = 0.5, xpd = TRUE, ncol = 4)
Le problème est qu'il y a une énorme distance entre le premier élément de la légende, "AAPL", et le second élément de la Technologie de l'Information".
J'ai essayé le réglage de l'espacement à l'aide de txt.width()
, mais il ne fonctionne pas du tout. Ou peut-être que je ne suis pas l'utilisation de cette option comme dirigé. C'est de cette façon que j'ai lancé l' txt.width
option à l'intérieur de legend()
:
txt.width = c(2,1,1)
Je ne suis pas sûr qu'il soit pertinent de le mentionner, mais mon axe des x est l'axe de dates!
Est-il un moyen facile de personnaliser les espaces entre le texte de la légende?
Merci!
OriginalL'auteur Mayou | 2014-01-21
Vous devez vous connecter pour publier un commentaire.
text.width
peut vous donner le contrôle sur la largeur de chaque colonne dans la légende, mais ce n'est pas simple. Fondamentalement,text.width
est un vecteur qui sera multiplié par un autre vecteur qui est longue comme vecteur de la légende des chaînes de caractères. Les éléments de cette deuxième vecteur sont des nombres entiers de0
àlength(legend)-1
. Voir la code pourlegend()
pour les détails sanglants. La chose importante est que vous pouvez penser de ce produit detext.width
et le deuxième vecteur de, environ, les coordonnées x pour vos éléments de légende. Alors si vous connaissez les coordonnées x vous le souhaitez, vous pouvez calculer ce que doit être passé dans letext.width
argument.Et puis votre code final pourrait ressembler à quelque chose comme ça (sauf que nous ne savons pas l'original de votre traçage de données ou de paramètres):
Comme Andre Silva mentionné, les valeurs que vous voulez dans
xcoords
ettextwidths
dépendra de la taille actuelle de votre parcelle de terrain, la plage de valeurs spécifiée pour votre axe x, etc.Aussi,
secondvector
ci-dessus seraient différentes si vous avez eu plus d'un élément par colonne. Par exemple, pour les deux colonnes de deux éléments de légende chacun,secondvector == c(0,0,1,1)
.OriginalL'auteur pangia
J'ai utilisé
text.width
avec quatre arguments pour définir l'espace entre les cordes dans la légende. Le deuxième argument à l'intérieur du texte.largeur réussi à mettre de la distance entre "AAPL" et "technologie de l'Information", et ainsi de suite pour les troisième et quatrième arguments.Malheureusement, j'avais besoin de réinitialiser les valeurs à l'intérieur de
text.width
chaque fois que j'ai changé la taille de la parcelle.OriginalL'auteur Andre Silva
Sur mon système (plate-forme: x86_64-w64-mingw32, R version: 3.4.1 (2017-06-30)) les solutions apportées jusqu'à présent par Andre Silva et pangja ne sont pas satisfaisants. Les deux solutions nécessitent la saisie de l'utilisateur et dépend de la taille de l'instrument. Depuis, je reçois jamais utilisé pour la
text.width
commande et a toujours eu pour ajuster les valeurs d'essai-erreur, j'ai écrit la fonction (f.horlegend
). La fonction a les mêmes arguments que la fonctionlegend
et est basé sur l'idée posté ici.La fonction crée l'horizontale (une ligne) de la légende, qui peut être positionné par la commande connue à partir de la fonction
legend
, par exemple"bottomleft"
Arguments
pos
position de la légende (c("bottomleft", "bas", "bottomright", "gauche", "centre", "droite", "topleft", "haut", "haut"))legend
le texte de la légendexoff
réglage de la position dans la direction x. NB: la légende est tracée sur un terrain avec des limites = c(0,1)yoff
même que xoff mais en y-directinlty
Le type de ligne. Les types de ligne peut être spécifié comme un entier (0=vide, 1=solide (par défaut), 2=en pointillés, 3=en pointillés, 4=dotdash, 5=longdash, 6=twodash)lwd
La largeur de la ligne, un nombre positif, par défaut 1ln.col
La couleur de la ligneseg.len
La longueur de la ligne, à défaut, à 0,04pch
Un entier spécifiant le symbole.pt.col
Le symbole de la couleur.pt.bg
La couleur d'arrière-plan du symbole.pt.cex
facteur d'expansion pour le symbolept.lwd
ligne de largeur de symboletext.cex
facteur d'expansion pour le textetext.col
couleur du textetext.font
de la police de textetext.vfont
voir vfont dans le texte-aiderbty
le type de boîte à tirer autour de la légende. Les valeurs autorisées sont "o" (par défaut) et "n"bbord
la couleur de la case de la légende de la frontièrebbg
couleur d'arrière-planblty
style de bordureblwd
frontière de la largeur de lignebdens
la densité de lignes, voir le segment de l'aidebbx.adj
valeur relative pour augmenter l'espace entre le texte et la boîte horizontale de la ligne debby.adj
même que bbx.adj mais pour bdc vertical de la ligne deMalheureusement, je n'ai pas de temps pour créer un package pour le moment. Mais n'hésitez pas à utiliser la fonction. Des commentaires et des idées pour améliorer les fonctions sont les bienvenus.
Quelques exemples
OriginalL'auteur RFelber
Pour mon cas, il y avait 5 légendes de façon horizontale. J'ai pour personnaliser l'espacement entre chaque légende. Suite a l'extrait de code pour ce but.
C'était la
text.width
fonction que de faire de la magieOriginalL'auteur Shafiq