Error: Don't know how to add o to a plot

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 : 44
Enregistré le : 23 Oct 2017, 22:24

Error: Don't know how to add o to a plot

Messagepar Julien Demeaux » 14 Juin 2018, 20:53

Bonjour à tous,

J'ai fait une recherche sur le forum mais je n'ai pas trouvé de réponse à mon problème.

j'ai un jeu (que j'ai créé depuis une base plus complète) correspondant à des positions moyennes (x,y)

Code : Tout sélectionner

> print(data)
# A tibble: 28 x 4
# Groups:   team.name [2]
   team.name   player.name                mean.x mean.y
   <chr>       <chr>                       <dbl>  <dbl>
 1 Chelsea LFC Anita Amma Ankyewah Asante   44.3   38.1
 2 Chelsea LFC Crystal Dunn                 76.5   15.4
 3 Chelsea LFC Drew Spence                  74.8   40.0
 4 Chelsea LFC Eniola Aluko                107.2   68.8
 5 Chelsea LFC Erin Cuthbert                80.1   41.7
 6 Chelsea LFC Francesca Kirby              90.3   45.3
 7 Chelsea LFC Hannah Jayne Blundell        66.8   64.8
 8 Chelsea LFC Magdalena Ericsson           45.6   18.4
 9 Chelsea LFC Maren Mjelde                 67.6   31.2
10 Chelsea LFC Maria Thorisdottir           51.7   30.4
# ... with 18 more rows


je veux mapper ces positions sur un terrain que j'ai ploté avec ggplot2 et qui s'appelle

Le terrain en lui-même se dessine parfaitement, mais dès que j'ajoute

Code : Tout sélectionner

p + ggplot(data, aes(x= -data$mean.y, y = data$mean.x, label = player.name)) +
  geom_point()


J'ai cette erreur :

Code : Tout sélectionner

Error: Don't know how to add o to a plot


quelqu'un saurait m'expliquer ce qu'est cette erreur, je ne la comprends pas.
Merci d'avance

Pierre-Yves Berrard
Messages : 495
Enregistré le : 12 Jan 2016, 23:30

Re: Error: Don't know how to add o to a plot

Messagepar Pierre-Yves Berrard » 14 Juin 2018, 21:09

Bonjour,

ggplot() sert à initialiser un graphique, donc tu ne peux pas initialiser un graphique sur un graphique existant.
Utilise data et aes comme arguments de couche geom_point().
PY

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

Re: Error: Don't know how to add o to a plot

Messagepar Julien Demeaux » 18 Juin 2018, 00:45

Merci Pierre-Yves !

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

Re: Error: Don't know how to add o to a plot

Messagepar Mickael Canouil » 18 Juin 2018, 09:22

Bonjour,

pour "corriger" l'écriture qui peut ne pas donner le résultat escompter.

Comme l'a dit Pierre-yves, le code suivant :

Code : Tout sélectionner

p + ggplot(data, aes(x= -data$mean.y, y = data$mean.x, label = player.name)) +
  geom_point()

doit être remplacé par:

Code : Tout sélectionner

p+geom_point(data = data, aes(x= -data$mean.y, y = data$mean.x, label = player.name))


Mais cela n'est pas "juste" pour autant.
En effet, en utilisant "data$", cela indique à ggplot de chercher dans l'objet "data" la variable désirée, or cet objet "data" peut être dans l'environnement global et ne pas être le même que celui fournie dans l'argument "data" du "geom_".
De plus, "data" est une fonction native de R et il n'est pas recommandé de nommer des objets par des noms de fonctions pour des raisons évidentes.
Ainsi, la bonne écriture serait (au nommage de "data" près):

Code : Tout sélectionner

p+geom_point(data = data, aes(x= -mean.y, y = mean.x, label = player.name))


Petit illustration:

Code : Tout sélectionner

library(tidyverse)

iris2 <- iris %>%
  mutate(Sepal.Length = Sepal.Length*100)

ggplot(data = iris, aes(x = Sepal.Length, y = Petal.Length)) + geom_point()

ggplot(data = iris, aes(x = iris2$Sepal.Length, y = Petal.Length)) + geom_point()



PS: Il semblerait également que vous ayez fait un 'group_by(team.name)', et utilisé 'mutate' pour calculer vos moyennes (a priori dans votre cas, ce serait plus 'summarise' qui serait plus adapté). 'mutate' ne dégroupe pas automatiquement votre jeux de données (chose faite par 'summarise'), ainsi il serait plus 'propre' d'appliquer 'ungroup' avec votre data si vous ne comptez pas utilisé le découpage en groupe (par exemple avec des 'mutate', 'map' pour générer des résultats/graphiques complexes par groupe)
Mickaël


Retourner vers « Questions en cours »

Qui est en ligne

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