web-dev-qa-db-de.com

R ggplot2: stat_count () darf nicht mit einem ästhetischen y-Fehler in der Balkengrafik verwendet werden

Hallo Leute Ich bekomme diesen Fehler beim Plotten eines Balkendiagramms und ich kann es nicht loswerden. Ich habe sowohl Qplot als auch ggplot versucht, aber immer noch den gleichen Fehler.

Folgendes ist mein 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()

Error:

  stat_count() must not be used with a y aesthetic

Daten in data_country

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

Der Fehler tritt im Balkendiagramm und nicht im gepunkteten Diagramm auf. Anregungen wären sehr hilfreich

52
Uasthana

Zunächst einmal ist Ihr Code ein bisschen aus. aes() ist ein Argument in ggplot(), Sie verwenden ggplot(...) + aes(...) + layers nicht.

Zweitens aus der Hilfedatei ?geom_bar:

Standardmäßig verwendet geom_bar stat = "count", wodurch die Höhe von .__ festgelegt wird. bar Anteil an der Anzahl der Fälle in jeder Gruppe (oder wenn das Gewicht Ästhetik angegeben ist, die Summe der Gewichte). Wenn Sie die Höhen wollen Verwenden Sie für die Darstellung der Werte in den Daten stat = "identity" und ordnen Sie der y-Ästhetik eine Variable zu.

Sie möchten den zweiten Fall, bei dem die Höhe des Balkens gleich dem conversion_rate ist. Sie möchten also ...

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")

Ergebnis: 

 enter image description here

96
Chrisss

wenn Sie Ihre in Ihrem Datenrahmen vorhandenen Daten als y-Wert verwenden möchten, müssen Sie im Zuordnungsparameter stat = "identity" hinzufügen. Die Funktion geom_bar hat den Standardwert y. Zum Beispiel,

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

Ich habe das gleiche gesucht und das kann auch funktionieren 

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

namen (p.Wages.all.A_MEAN) [1] "Karriere-Cluster" "Jahr" "JÄHRLICH.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