2016-03-14 25 views
5

Voglio fare un istogramma molto semplice con ggplot2. Ho il seguente MWE:R: ggplot: Errore: parametri sconosciuti: binwidth, bin, pad

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

ho sempre usato questo semplice codice per la produzione di questo tipo di istogrammi.

In realtà, ho la trama di questo particolare esempio che ho fatto qualche tempo fa ...

enter image description here

Tuttavia, ora faccio funzionare questo codice esattamente lo stesso, e ottengo il seguente errore:

Error: Unknown parameters: binwidth, bins, pad

Perché trovo questo errore ora e non prima, e cosa significa?

Grazie mille!

+0

I dati di input sono cambiati rispetto al grafico originale? –

+0

Nessuna modifica, l'ho effettivamente copiata dal mio vecchio codice per questo MWE – DaniCee

+0

Hanno introdotto le modifiche a ggplot2_ Quale sarebbe il modo corretto di riprodurre quella trama con quei dati ora? – DaniCee

risposta

-4

io piuttosto userebbe dplyr (operatore pipe) per una chiara comprensione del codice:

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

Sono un grande fan degli operatori di pipe. –

+2

Questo non risponde alla domanda – DataTx

-1

geom_histogram() non è il modo più appropriato per tracciare conteggi di valori discreti.

Come hai pre-calcolato i valori di frequenza, usa invece geom_col(), quindi tutti gli errori scompariranno.

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) 

NB: anche bisogno di definire la colonna Gene come non è un fattore e scale_x_discrete() per evitare ordine alfabetico delle l'asse x.