geom_segment (ggplot2)

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

Julien Demeaux
Messages : 49
Enregistré le : 23 Oct 2017, 22:24

geom_segment (ggplot2)

Messagepar Julien Demeaux » 23 Aoû 2018, 16:13

Bonjour à tous,

ma problématique du jour !...
Je dois ajouter une couche de vecteurs dans ggplot en utilisant geom_segment. Mon problème est que mes x et y sont sur une ligne du data frame et que mes xend et yend sont à prendre en compte sur la ligne suivante qui contient une variable identique.

Code : Tout sélectionner

x <- c(12,26,35,21,84)
y <- c(23,54,86,45,91)
id <- c("A","B","A","C","B")
df <- data.frame(id,x,y)


Par exemple avec ce df, je voudrais plotter pour la valeur id "A" un geom_segment x=12, y=23, xend=35, yend=86.
Comment puis-je écrire mon code pour que cette logique soit appliquée à chaque fois ?

J'ai essayé avec un subset

Code : Tout sélectionner

ggplot() + geom_point(data=subset(df, id=="A"), aes(x=x, y=y, xend=x[+1], yend=y[+1]))

et d'autres codes qui ne fonctionnent pas mais je ne trouve pas le "truc" pour m'en sortir...
Quelqu'un peut-il m'aider ?

Merci beaucoup :)

Guillaume Devailly
Messages : 28
Enregistré le : 22 Déc 2017, 12:31

Re: geom_segment (ggplot2)

Messagepar Guillaume Devailly » 24 Aoû 2018, 06:46

Une possibilité en utilisant la fonction lead() du package dplyr:

Code : Tout sélectionner

ggplot() +
    geom_segment(data = subset(df, id=="A"), mapping = aes(x=x, y=y, xend=lead(x), yend=lead(y)))


Ou encore:

Code : Tout sélectionner

ggplot(mapping = aes(x=x, y=y, xend=lead(x), yend=lead(y))) +
    geom_segment(data = subset(df, id=="A")) +
    geom_segment(data = subset(df, id=="B"))

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: geom_segment (ggplot2)

Messagepar Logez Maxime » 24 Aoû 2018, 06:49

Bonjour,

Je ne sais pas si ça peut répondre à ta question :

Code : Tout sélectionner

ggplot(df, aes(x,y,group=id)) + geom_point() + geom_path()
Cordialement,
Maxime

Julien Demeaux
Messages : 49
Enregistré le : 23 Oct 2017, 22:24

Re: geom_segment (ggplot2)

Messagepar Julien Demeaux » 25 Aoû 2018, 07:17

Merci pour votre aide.
La solution de Guillaume semble fonctionner


Retourner vers « Questions en cours »

Qui est en ligne

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