Existe-t-il un moyen de modifier l'espacement entre les éléments de légende dans ggplot2? J'ai actuellement
legend.position ="top"
qui produit automatiquement une légende horizontale. Cependant, l'espacement des éléments est très rapproché et je me demande comment les espacer davantage.
opts
est dépréciée.Réponses:
ggplot2 v3.0.0
publié en juillet 2018 a des options de travail à modifierlegend.spacing.x
,legend.spacing.y
etlegend.text
.Exemple: augmenter l'espacement horizontal entre les clés de légende
Remarque: si vous souhaitez uniquement élargir l'espacement à droite du texte de la légende, utilisez
stringr::str_pad()
Exemple: déplacez les étiquettes des touches de légende vers le bas et augmentez l'espacement vertical
Exemple: pour
scale_fill_xxx
&guide_colorbar
Pour les légendes verticales , le réglage
legend.key.size
n'augmente que la taille des touches de légende, pas l'espace vertical entre ellesAfin d'augmenter la distance entre les touches de légende, une modification de la
legend-draw.r
fonction est nécessaire. Consultez ce numéro pour plus d'informationsla source
Je pense que la meilleure option est d'utiliser
guide_legend
dansguides
:Notez l'utilisation de
default.unit
, pas besoin de charger legrid
package.la source
Un correctif simple que j'utilise pour ajouter de l'espace dans les légendes horizontales, ajoutez simplement des espaces dans les étiquettes (voir l'extrait ci-dessous):
la source
scale_fill_manual(values=values, labels=setNames(paste(labels, " "), entries))
.Maintenant que
opts
c'est obsolète dans leggplot2
package, la fonctiontheme
doit être utilisée à la place:la source
Pour ajouter un espacement entre les entrées d'une légende, ajustez les marges de l'élément de thème
legend.text
.Pour ajouter 30 pt d'espace à droite de chaque étiquette de légende (peut être utile pour une légende horizontale):
Pour ajouter 30 pt d'espace à gauche de chaque étiquette de légende (peut être utile pour une légende verticale):
pour un
ggplot2
objetp
. Les mots-clés sontlegend.text
etmargin
.[Note sur la modification: lorsque cette réponse a été publiée pour la première fois, il y avait un bogue. Le bogue a maintenant été corrigé]
la source
On dirait que la meilleure approche (en 2018) est d'utiliser
legend.key.size
sous l'theme
objet. (par exemple, voir ici ).C'est très simple si vous utilisez
theme_bw()
:Cependant, cela ne fonctionne pas très bien autrement (par exemple, si vous avez besoin de l'arrière-plan gris sur votre symbole de légende):
Notez que les carrés blancs commencent à bloquer le titre de la légende (et éventuellement le graphique lui-même si nous continuons d'augmenter la valeur).
Je n'ai pas encore trouvé de solution pour résoudre le problème ci-dessus ... Faites-moi savoir dans les commentaires si vous avez une idée, et je mettrai à jour en conséquence!
$layers
...la source
legend.key
transparent:theme(legend.key = element_rect(size = 30,color=alpha("transparent",0)))
D'après le travail de Koshke sur ggplot2 et son blog (blog de Koshke )
Tapez
theme_get()
dans la console pour voir les autres attributs de légende modifiables.la source
Utilisez l'un de ces
la source