web-dev-qa-db-fra.com

Réduction de la taille de la légende dans ggplot au-delà de la taille par défaut

Mon objectif est de créer plusieurs tracés avec ggplot et de les combiner en un seul tracé en utilisant grid.arrange dans le package gridExtra.

Je rencontre un problème dans la mesure où les légendes de mon ggplot (bien que de taille appropriée pour une seule parcelle) sont trop grandes lorsque j'essaie de placer les parcelles côte à côte avec grid.arrange. Les tracés combinés résultants réduisent l'axe des x mais conservent la taille d'origine de la légende. Le résultat est donc une intrigue très maigre, à côté d'une légende inutilement grande. Je voudrais donc réduire la taille de la légende dans chaque parcelle, suffisamment pour que je puisse placer mes parcelles côte à côte. Ou peut-être les rétrécir suffisamment pour les faire entrer dans l'intrigue réelle sans être trop dominateur.

V1<-rnorm(10)
V2<-rnorm(10)
V3<-rnorm(10)
DF<-data.frame(V1,V2,V3)


ggplot(DF,aes(x=V1,y=V2,size=V3))+
geom_point(fill='red',shape=21)+
theme_bw()+
scale_size(range=c(5,20))

Cette commande de tracé produit une taille de légende standard à droite du tracé.

enter image description here

J'ai essayé d'utiliser différents éléments de thème:

+theme(legend.key.size = unit(0.5, "cm")

ou

+theme(legend.key.width=unit(0.3,"cm"),legend.key.height=unit(0.3,"cm"),legend.position = c(0.7, 0.8))

Et bien que je puisse agrandir la légende à l'aide de ces commandes de thème, je ne peux pas rendre la légende plus petite que la légende par défaut. Existe-t-il un moyen de réduire la légende au-delà de la taille par défaut?

Je peux également changer la taille par défaut de mon appareil pdf pour le rendre plus large et accueillir les grandes légendes, mais je voudrais travailler avec une taille pdf standard pour l'instant.

26
Vinterwoo

L'intérêt d'une légende est de cartographier l'esthétique de l'intrigue (par exemple, la couleur, le remplissage, la forme ou la taille) aux niveaux identifiés dans la légende. Les paramètres legend.key.size, .width Et .height Ajustent la taille de la boîte entourant l'élément de légende. Avec la couleur, le remplissage et la forme, vous pouvez rendre les éléments de légende aussi petits que vous le souhaitez, mais avec la taille, la taille de l'élément vous indique quelle bulle correspond à quel élément de légende, de sorte que les éléments de légende doivent avoir des tailles qui correspondent à ce qui est sur l'intrigue.

Voici trois possibilités qui pourraient vous aider:

Option 1: Mettez la légende à l'intérieur de l'intrigue.

ggplot(DF,aes(x=V1,y=V2,size=V3))+
  geom_point(fill='red',shape=21)+
  theme_bw()+
  scale_size(range=c(5,20))+
  theme(legend.justification=c(1,0), legend.position=c(1,0))

Option 2: utilisez facet_wrap(...) si vous le pouvez. De cette façon, vous obtenez une seule légende pour l'ensemble des tracés.

Option 3: utilisez la couleur et la taille, puis masquez complètement la légende de la taille.

ggplot(DF,aes(x=V1,y=V2,size=V3, color=V3))+
  geom_point(shape=19)+
  theme_bw()+
  scale_size(range=c(5,20), guide="none")+
  scale_color_gradient(high="#ff0000", low="#ffffcc")   

20
jlhoward