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

Jean_Claude Sztuka
Messages : 3
Enregistré le : 26 Aoû 2021, 09:47

ggplot2

Messagepar Jean_Claude Sztuka » 06 Sep 2021, 08:36

Bonjour
je suis débutant avec R et je n'arrive pas à faire figurer les droites de régression de 2 nuages de points dessinés sur le même graphe en utilisant ggplot2. Données "Soud3" : largeur et hauteur d'un cordon de soudage en fonction de l'énergie apportée.
View(Soud3)
> library(ggplot2)
> ggplot(Soud3, aes(x=Energie)) +
geom_point(aes(y = Largeur), color = "darkred") +
geom_point(aes(y = Hauteur), color = "blue") j'obtiens 2 nuages de points largeur _ hauteur / énergie
En écrivant :
ggplot(Soud3, aes(x=Energie, y=Largeur)) + geom_point()+geom_smooth(formula=y~x, method=lm, se=TRUE)
j'obtiens bien la droite de régression pour un paramètre (largeur en fonction de l'énergie) mais je n'arrive pas à trouver la formulation pour obtenir cette droite sur le même graphe avec largeur et hauteur en fonction de l'énergie.
Merci pour votre aide.

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

Re: ggplot2

Messagepar Mickael Canouil » 06 Sep 2021, 11:55

Bonjour,

{ggplot2} exploite le format long et non large.

Ainsi, travailler dans le bon format simplifie grandement la vie et évite les répétition de code.
{ggplot2} exploite une grammaire/philosophie qu'il convient de comprendre/connaître avant de vraiment pouvoir l'exploiter l'API (https://www.youtube.com/watch?v=h29g21z0a68).

Avec un code reproductible (moins pour le résultat) et les balises de code :

Code : Tout sélectionner

Soud3 <- data.frame(
  Energie = rnorm(25),
  Hauteur = runif(25, 0, 50),
  Largeur = runif(25, 0, 50)
)

Code : Tout sélectionner

library("ggplot2")
ggplot(data = Soud3) +
  aes(= Energie, y = Largeur) + 
  geom_point
() +
  geom_smooth(formula = y ~ x, method = "lm",  se = TRUE)

Image
Dans le "bon" format avec {tidyr} (reshape/reshape2 fonctionne aussi avec melt())

Code : Tout sélectionner

library("tidyr")
(
Soud3_long <- pivot_longer(Soud3, cols = c("Hauteur", "Largeur")))
#> # A tibble: 50 x 3
#>    Energie name    value
#>      <dbl> <chr>   <dbl>
#>  1  0.0311 Hauteur 47.5 
#>  2  0.0311 Largeur 25.2 
#>  3 -2.19   Hauteur 42.5 
#>  4 -2.19   Largeur 40.0 
#>  5 -1.20   Hauteur 14.4 
#>  6 -1.20   Largeur  7.22
#>  7 -0.547  Hauteur 14.6 
#>  8 -0.547  Largeur 40.2 
#>  9 -0.286  Hauteur 14.9 
#> 10 -0.286  Largeur  5.55
#> # ... with 40 more rows
ggplot(data = Soud3_long) +
  aes(= Energie, y = value, colour = name) +
  geom_point() +
  geom_smooth(formula = y ~ x, method = "lm",  se = TRUE)

Image
Si on veut vraiment le faire à coup de copier-coller (pas du tout recommandé en plus d'être laborieux) :

Code : Tout sélectionner

library("ggplot2")
ggplot(data = Soud3) +
  aes(= Energie) +
  geom_point(mapping = aes(= Largeur, colour = "Largeur")) +
  geom_smooth(mapping = aes(= Largeur, colour = "Largeur"), formula = y ~ x, method = "lm",  se = TRUE) + 
  geom_point
(mapping = aes(= Hauteur, colour = "Hauteur")) +
  geom_smooth(mapping = aes(= Hauteur, colour = "Hauteur"), formula = y ~ x, method = "lm",  se = TRUE)

Image

Cordialement
Mickaël
mickael.canouil.fr | rlille.fr


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité