R ggplot2:stat_count()不得与条形图中的y美学错误一起使用

时间:2016-09-24 17:26:57

标签: r ggplot2 bar-chart

大家好我在绘制条形图时遇到此错误而我无法摆脱它,我已经尝试了qplot和ggplot但仍然是同样的错误。

以下是我的代码

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

错误:

  stat_count() must not be used with a y aesthetic

data_country中的数据

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

错误出现在条形图中而不是虚线图表中。任何建议都会有很大的帮助

4 个答案:

答案 0 :(得分:110)

首先,你的代码有点偏。 aes()中的ggplot()是一个参数,您不能使用ggplot(...) + aes(...) + layers

其次,来自帮助文件?geom_bar

  

默认情况下,geom_bar使用stat =&#34; count&#34;这使得高度   酒吧比例与每组病例数(或重量   提供了aethetic,权重的总和)。如果你想要高度   用于表示数据中值的条形图,使用stat =&#34; identity&#34;和   将变量映射到y审美。

你想要第二种情况,其中条的高度等于conversion_rate所以你想要的是......

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

结果:

enter image description here

答案 1 :(得分:2)

当要使用数据框中存在的数据作为y值时,必须在映射参数中添加stat =“ identity”。函数geom_bar具有默认的y值。例如,

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

答案 2 :(得分:2)

您可以直接使用geom_col()。在此链接https://ggplot2.tidyverse.org/reference/geom_bar.html

中查看geom_bar()和geom_col()之间的区别
  

geom_bar()使条形的高度与每个组中的案例数成正比。如果要使条形的高度表示数据中的值,请改用geom_col()。

ggplot(data_country)+aes(x=country,y = conversion_rate)+geom_col()

答案 3 :(得分:0)

我一直在寻找相同的商品,这可能也有用

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

名称(p.Wages.all.A_MEAN)   [1]“职业集群”“年度”“年度平均工资”

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