R ggplot2: stat_count() must not be used with a y aesthetic error in Bar graph

前端 未结 4 1323
[愿得一人]
[愿得一人] 2020-12-02 06:34

I am getting this error while plotting a bar graph and I am not able to get rid of it, I have tried both qplot and ggplot but still the same error.

Following is my c

相关标签:
4条回答
  • 2020-12-02 07:05

    when you want to use your data existing in your data frame as y value, you must add stat = "identity" in mapping parameter. Function geom_bar have default y value. For example,

    ggplot(data_country)+
      geom_bar(mapping = aes(x = country, y = conversion_rate), stat = "identity")
    
    0 讨论(0)
  • 2020-12-02 07:12

    You can use geom_col() directly. See the differences between geom_bar() and geom_col() in this link https://ggplot2.tidyverse.org/reference/geom_bar.html

    geom_bar() makes the height of the bar proportional to the number of cases in each group If you want the heights of the bars to represent values in the data, use geom_col() instead.

    ggplot(data_country)+aes(x=country,y = conversion_rate)+geom_col()
    
    0 讨论(0)
  • 2020-12-02 07:20

    I was looking for the same and this may also work

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

    names(p.Wages.all.A_MEAN) [1] "Career Cluster" "Year" "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 讨论(0)
  • 2020-12-02 07:29

    First off, your code is a bit off. aes() is an argument in ggplot(), you don't use ggplot(...) + aes(...) + layers

    Second, from the help file ?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.

    You want the second case, where the height of the bar is equal to the conversion_rate So what you want is...

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

    Result:

    0 讨论(0)
提交回复
热议问题