ggplot - faire varier la taille des symboles entre la carte et la légende

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Laure Trudel
Messages : 24
Enregistré le : 26 Mar 2013, 11:02

ggplot - faire varier la taille des symboles entre la carte et la légende

Messagepar Laure Trudel » 05 Jan 2019, 23:41

Bonjour,

J'ai réalisé une carte avec ggplot avec des localisations d'animaux pour différentes régions du globe(régions représentées par des couleurs) et j'ai affiché une légende qui correspond pour chaque point de couleur à une région. J'aimerais mettre les points sur la carte d'une taille plus petite que dans la légende mais je ne trouve comment faire. J'ai essayé plusieurs choses mais ça ne marche, la taille des points de la légende change toujours avec la taille des points sur la carte. Une idée?
Voici le code:


ggplot()+
geom_polygon(data=world, aes(x=long, y=lat, group = group),colour="white", fill="grey10" ) + ylim(-70, 20) + xlim(-180, 180) +
coord_equal() + labs(x = "Longitude", y="Latitude") +
geom_point(data=tabtot, aes(x=Longitude, y=Latitude, color=subregion ),size=2) +
scale_colour_discrete(labels=c("West South Atl", "East South Atl", "West Ind Oc","East Indi Oc","West Pacif","Oceania","South Pac","East South Pac","East South Pac"), breaks=c( "Braz" , "Gabon" , "Mad" ,"West" ,"East","NewCal" ,"Cook" ,"CentAme" , "PanEcua")) +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
axis.title.x = element_text(colour="white"),
axis.title.y = element_text(size=10, angle=90),
axis.text.x = element_text(colour="white"),
axis.text.y = element_text(size=10),
legend.position = "bottom",
legend.title = element_text(colour="white", size=10),
legend.text = element_text(colour="black", size=10),
legend.key = element_blank() )
Merci

Mickael Canouil
Messages : 554
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: ggplot - faire varier la taille des symboles entre la carte et la légende

Messagepar Mickael Canouil » 07 Jan 2019, 09:13

Bonjour,

l'argument "size" des fonctions geom_* permet de gérer la taille des points sur le graphique. Celle-ci ne change la taille des points dans la légende que si l'argument "size" est placé dans "geom_*(mapping = aes(size = monfacteur), ...)".

Pour changer l'affichage de la légende, il faut passer par la fonction "theme()" et modifier les éléments souhaités:
legend.background, legend.margin,
legend.spacing, legend.spacing.x, legend.spacing.y, legend.key,
legend.key.size, legend.key.height, legend.key.width, legend.text,
legend.text.align, legend.title, legend.title.align, legend.position,
legend.direction, legend.justification, legend.box, legend.box.just,
legend.box.margin, legend.box.background, legend.box.spacing,


Si vous souhaitez une réponse plus précise à votre problème, il faudrait fournir un code fonctionnel et reproductible.
Qu'est-ce qu'un code reproductible ?
Comment insérer des données dans un message
Cordialement,
Mickaël

Laure Trudel
Messages : 24
Enregistré le : 26 Mar 2013, 11:02

Re: ggplot - faire varier la taille des symboles entre la carte et la légende

Messagepar Laure Trudel » 07 Jan 2019, 23:10

Bonjour,

Je n'ai pas bien compris votre réponse.
Si je laisse l'argument "size" dans geom_point comme c'est écris dans mon code :
geom_point(data=tabtot, aes(x=Longitude, y=Latitude, color=subregion ),size=2) alors la taille des points dans la légende change aussi et non pas uniquement si l'argument size est placé dans geom_*(data, aes(size=...),...).

Sinon, j'ai compris que l'on pouvait changer l'affichage de la légende avec la fonction theme() mais je n'ai pas trouvé quel élément fallait-il modifier pour changer la taille des symboles DANS la légende ?

Merci,

Laure Trudel
Messages : 24
Enregistré le : 26 Mar 2013, 11:02

Re: ggplot - faire varier la taille des symboles entre la carte et la légende

Messagepar Laure Trudel » 07 Jan 2019, 23:18

Pour être peut-être plus claire je voudrais que mes points sur ma carte est une taille de 0.5 alors que dans la légende j'aimerais que la taille des points soit de 2.

Mickael Canouil
Messages : 554
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: ggplot - faire varier la taille des symboles entre la carte et la légende

Messagepar Mickael Canouil » 08 Jan 2019, 11:11

Pour clarifier ma réponse: le comportement standard de ggplot2 est de fournir une légende en adéquation avec la figure (ce qui est tout à fait logique).
Vouloir autre-chose revient à vouloir changer le comportement standard et donc il faut commencer à "bidouiller" le graphique.

Code : Tout sélectionner

library(tidyverse)
ggplot(data = iris, mapping = aes(x = Sepal.Length, y = Sepal.Width, colour = Species)) +
  geom_point(size = 12) +
  guides(colour = guide_legend(override.aes = list(size = 2)))

Image
Mickaël

Laure Trudel
Messages : 24
Enregistré le : 26 Mar 2013, 11:02

Re: ggplot - faire varier la taille des symboles entre la carte et la légende

Messagepar Laure Trudel » 08 Jan 2019, 18:33

Super ça marche, merci beaucoup!
Je ne sais pas si je dois ouvrir une nouvelle discussion mais savez-vous comment changer les marges d'une figure avec ggplot?

Mickael Canouil
Messages : 554
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: ggplot - faire varier la taille des symboles entre la carte et la légende

Messagepar Mickael Canouil » 09 Jan 2019, 13:50

Il faut utiliser la fonction theme()
https://ggplot2.tidyverse.org/reference/theme.html

Cordialement,
Mickaël


Laure Trudel
Messages : 24
Enregistré le : 26 Mar 2013, 11:02

Re: ggplot - faire varier la taille des symboles entre la carte et la légende

Messagepar Laure Trudel » 09 Jan 2019, 16:53

Merci à vous, j'ai réussi à trouver entre tps !


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité