Le graphique en courbes ggplot2 donne «geom_path: chaque groupe ne comprend qu’une seule observation. Avez-vous besoin d’ajuster l’esthétique du groupe?

Avec ce bloc de données (“df”):

year pollution 1 1999 346.82000 2 2002 134.30882 3 2005 130.43038 4 2008 88.27546 

J’essaie de créer un graphique comme celui-ci:

  plot5 <- ggplot(df, aes(year, pollution)) + geom_point() + geom_line() + labs(x = "Year", y = "Particulate matter emissions (tons)", title = "Motor vehicle emissions in Baltimore") 

L’erreur que je reçois est:

geom_path: chaque groupe ne comprend qu’une seule observation. Avez-vous besoin d’ajuster l’esthétique du groupe?

Le graphique apparaît comme un nuage de points même si je veux un graphique en courbes. J’ai essayé de remplacer geom_line() par geom_line(aes(group = year)) mais cela n’a pas fonctionné.

Dans une réponse, on m’a dit de convertir l’année en variable de facteur. Je l’ai fait et le problème persiste. Ceci est la sortie de str(df) et dput(df) :

 'data.frame': 4 obs. of 2 variables: $ year : num 1 2 3 4 $ pollution: num [1:4(1d)] 346.8 134.3 130.4 88.3 ..- attr(*, "dimnames")=List of 1 .. ..$ : chr "1999" "2002" "2005" "2008" structure(list(year = c(1, 2, 3, 4), pollution = structure(c(346.82, 134.308821199349, 130.430379885892, 88.275457392443), .Dim = 4L, .Dimnames = list( c("1999", "2002", "2005", "2008")))), .Names = c("year", "pollution"), row.names = c(NA, -4L), class = "data.frame") 

Vous devez seulement append le group = 1 dans le ggplot ou le geom_line aes ().

Pour les graphiques linéaires, les points de données doivent être regroupés de manière à savoir quels points connecter. Dans ce cas, c’est simple – tous les points doivent être connectés, donc le groupe = 1. Lorsque plusieurs variables sont utilisées et que plusieurs lignes sont dessinées, le regroupement des lignes se fait généralement par variable.

Référence: Cookbook for R, Chapitre: Graphes Bar_and_line_graphs_ (ggplot2), Graphiques linéaires.

Essaye ça:

 plot5 <- ggplot(df, aes(year, pollution, group = 1)) + geom_point() + geom_line() + labs(x = "Year", y = "Particulate matter emissions (tons)", title = "Motor vehicle emissions in Baltimore") 

Vous obtenez cette erreur car l’une de vos variables est en fait une variable de facteur. Exécuter

 str(df) 

pour vérifier cela. Ensuite, cette double variable change pour conserver les nombres d’années au lieu de se transformer en nombres de niveau “1,2,3,4”:

 df$year <- as.numeric(as.character(df$year)) 

EDIT: il semble que votre data.frame ait une variable de classe "array" qui pourrait provoquer le pb. Essayez alors:

 df <- data.frame(apply(df, 2, unclass)) 

et plto

Lancez R dans une nouvelle session et collez-le dans:

 library(ggplot2) df <- structure(list(year = c(1, 2, 3, 4), pollution = structure(c(346.82, 134.308821199349, 130.430379885892, 88.275457392443), .Dim = 4L, .Dimnames = list( c("1999", "2002", "2005", "2008")))), .Names = c("year", "pollution"), row.names = c(NA, -4L), class = "data.frame") df[] <- lapply(df, as.numeric) # make all columns numeric ggplot(df, aes(year, pollution)) + geom_point() + geom_line() + labs(x = "Year", y = "Particulate matter emissions (tons)", title = "Motor vehicle emissions in Baltimore")