93 votes

R ggplot2: stat_count () ne doit pas être utilisé avec une erreur esthétique éventuelle dans un 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

153voto

Chrisss Points 1989

Tout d'abord, votre code est un peu hors. aes() est un argument en ggplot(), vous n'avez pas utiliser ggplot(...) + aes(...) + layers

La seconde, dès le fichier d'aide ?geom_bar

By default, geom_bar uses stat="count" which makes the height of the bar proportion to the number of cases in each group (or if the weight aethetic is supplied, the sum of the weights). If you want the heights of the bars to represent values in the data, use stat="identity" and map a variable to the y aesthetic.

Vous voulez le second cas, où la hauteur de la barre est égale à l' 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X