web-dev-qa-db-fra.com

R ggplot2: stat_count () ne doit pas être utilisé avec une erreur esthétique y dans le graphique à barres

Salut les gars, je reçois cette erreur en traçant un graphique à barres et je ne parviens pas à m'en débarrasser. J'ai essayé à la fois qplot et ggplot mais toujours la même erreur.

Voici mon code 

 library(dplyr)
 library(ggplot2)

 #Investigate data further to build a machine learning model
 data_country = data %>%
           group_by(country) %>%
           summarise(conversion_rate = mean(converted))
  #Ist method
  qplot(country, conversion_rate, data = data_country,geom = "bar", stat ="identity", fill =   country)
  #2nd method
  ggplot(data_country)+aes(x=country,y = conversion_rate)+geom_bar()

Erreur:

  stat_count() must not be used with a y aesthetic

Données dans data_country

    country conversion_rate
    <fctr>           <dbl>
  1   China     0.001331558
  2 Germany     0.062428188
  3      UK     0.052612025
  4      US     0.037800687

L'erreur vient dans l'histogramme et non dans le graphique en pointillé. Toutes les suggestions seraient d'une grande aide

52
Uasthana

Tout d'abord, votre code est un peu éteint. aes() est un argument dans ggplot(), vous n'utilisez pas ggplot(...) + aes(...) + layers

Deuxièmement, à partir du fichier d’aide ?geom_bar:

Par défaut, geom_bar utilise stat = "count", ce qui fait la hauteur du barre proportion au nombre de cas dans chaque groupe (ou si la pondération est fournie, la somme des poids). Si vous voulez les hauteurs des barres pour représenter les valeurs dans les données, utilisez stat = "identity" et mapper une variable à l'esthétique y.

Vous voulez le deuxième cas, où la hauteur de la barre est égale au conversion_rate Donc, ce que vous voulez, c'est ...

data_country <- data.frame(country = c("China", "Germany", "UK", "US"), 
            conversion_rate = c(0.001331558,0.062428188, 0.052612025, 0.037800687))
ggplot(data_country, aes(x=country,y = conversion_rate)) +geom_bar(stat = "identity")

Résultat: 

 enter image description here

96
Chrisss

lorsque vous souhaitez utiliser vos données existantes dans votre trame de données en tant que valeur y, vous devez ajouter stat = "identity" dans le paramètre de mappage. La fonction geom_bar a la valeur y par défaut. Par exemple,

ggplot(data_country)+
  geom_bar(mapping = aes(x = country, y = conversion_rate), stat = "identity")
1
user11366761

Je cherchais le même et cela peut aussi marcher 

p.Wages.all.A_MEAN <- Wages.all %>%
                  group_by(`Career Cluster`, Year)%>%
                  summarize(ANNUAL.MEAN.WAGE = mean(A_MEAN))

noms (p.Wages.all.A_MEAN) [1] "Cluster de carrière" "Année" "ANNUAL.MEAN.WAGE"

p.Wages.all.a.mean <- ggplot(p.Wages.all.A_MEAN, aes(Year, ANNUAL.MEAN.WAGE , color= `Career Cluster`))+
                  geom_point(aes(col=`Career Cluster` ), pch=15, size=2.75, alpha=1.5/4)+
                  theme(axis.text.x = element_text(color="#993333",  size=10, angle=0)) #face="italic",
p.Wages.all.a.mean
0
Seyma Kalay