R:ggplot:错误:未知参数:binwidth,bin,pad

时间:2016-03-14 07:03:49

标签: r error-handling ggplot2 histogram

我想用ggplot2做一个非常简单的直方图。我有以下MWE:

library(ggplot2)
mydf <- data.frame(
                  Gene=c("APC","FAT4","XIRP2","TP53","CSMD3","BAI3","LRRK2","MACF1",
                  "TRIO","SETD2","AKAP9","CENPF","ERBB4","FBXW7","NF1","PDE4DIP",
                  "PTPRT","SPEN","ATM","FAT1","SDK1","SMG1","GLI3","HIF1A","ROS1",
                  "BRDT","CDH11","CNTRL","EP400","FN1","GNAS","LAMA1","PIK3CA",
                  "POLE","PRDM16","ROCK2","TRRAP","BRCA2","DCLK1","EVC2","LIFR",
                  "MAST4","NAV3"),
                  Freq=c(48,39,35,28,26,17,17,17,16,15,14,14,14,14,14,14,14,14,13,
                  13,13,13,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,
                  10,10,10))
mydf
ggplot(mydf, aes(x=Gene)) +
      geom_histogram(aes(y=Freq),
      stat="identity",
      binwidth=.5, alpha=.5,
      position="identity")

我一直使用这个简单的代码来生成这种直方图。

事实上,我有一段时间以前制作的这个特例的情节......

enter image description here

但是,现在我运行完全相同的代码,我收到以下错误:

  

错误:未知参数:binwidth,bin,pad

为什么我现在而不是之前发现此错误,这是什么意思?

非常感谢!

2 个答案:

答案 0 :(得分:1)

geom_histogram()不再是绘制离散值计数的最合适方式。

如果您预先计算了频率值,请使用geom_col(),然后所有错误都将消失。

library(ggplot2)
mydf <- data.frame(
               Gene=c("APC","FAT4","XIRP2","TP53","CSMD3","BAI3","LRRK2","MACF1",
              "TRIO","SETD2","AKAP9","CENPF","ERBB4","FBXW7","NF1","PDE4DIP",
              "PTPRT","SPEN","ATM","FAT1","SDK1","SMG1","GLI3","HIF1A","ROS1",
              "BRDT","CDH11","CNTRL","EP400","FN1","GNAS","LAMA1","PIK3CA",
              "POLE","PRDM16","ROCK2","TRRAP","BRCA2","DCLK1","EVC2","LIFR",
              "MAST4","NAV3"),
              Freq=c(48,39,35,28,26,17,17,17,16,15,14,14,14,14,14,14,14,14,13,
              13,13,13,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,
              10,10,10), stringsAsFactors = FALSE)
mydf
ggplot(mydf, aes(x=Gene, y=Freq)) + 
   geom_col() + 
   scale_x_discrete(limits = mydf$Gene)

注意:还需要将Gene列定义为不是因子而使用scale_x_discrete()以避免x轴的字母顺序。

答案 1 :(得分:-5)

我宁愿使用dplyr(管道运算符)来清楚地理解代码:

   mydf %>%  #my data frame
     as.data.frame %>%  #if mydf is not a dataframe
     ggplot(aes(x = Var, y = n)) 
       + geom_bar( aes(y = n), stat = "identity", position = "identity")