2016-01-06 9 views
7

Questa mattina ho aggiornato a R 3.2.3 (OSX 10.11.1). I miei script ggplot2 del seguente tipo hanno improvvisamente smesso di funzionare:ggplot2 in R 3.2.3: livelli interrotti?

df <- data.frame(ind = c(20,35,45,55,70), dep = c(6,17,26,37,44)) 

sintassi 1:

ggplot()+ layer(data=df, mapping=aes(x=ind, y=dep), geom="point") 

"Error: Attempted to create layer with no stat." 

ggplot2 per sé non è rotto dal

sintassi 2:

ggplot(df, aes(x=ind, y=dep)) + geom_point() 

produce il grafico previsto. Sintassi 1 produce ancora il grafico previsto su una vecchia macchina (R 2.15.3 OSX 10.5.8). Inoltre, l'ho usato solo stamattina prima dell'aggiornamento R. Ho cancellato e ricaricato R3.2.3, ggplot2 e dipendenti, ma il problema persiste. Mi piace la sintassi 1 perché mi piace aggiungere layer da diversi dataset. Sarei grato per i pensieri.

+0

fare le macchine hanno la stessa versione di ggplot2? – jbaums

+1

Le macchine non hanno la stessa versione di ggplot. È concepibile che ggplot sia stato aggiornato alla v.2.0.0 quando ho aggiornato la versione R. Hadley scrive: "I livelli ora sono molto più rigidi riguardo ai loro argomenti - si otterrà un errore se si è fornito un argomento che non è un parametro estetico o un parametro. Ciò probabilmente causerà un certo dolore a breve termine, ma nel lungo termine renderà molto più facile individuare errori di ortografia e altri errori (# 1293). " Temo di aver colpito il dolore. –

+0

Interessante. Non riuscivo a farlo funzionare anche dopo aver aggiunto 'stat =" identity ", position =" identity "'. È morto con il messaggio "Errore: is.logical (na.rm) non è VERO". Penso che sia un bug. –

risposta

0

Per lo più funziona bene quando si applicano stat = "identità", position_dodge (width = 3) nello strato funzione

ggplot()+ layer(data=df, mapping=aes(x=ind, y=dep), geom="point",stat="identity",position_dodge(width=3)) 

#data 

df <- data.frame(ind = c(20,35,45,55,70), dep = c(6,17,26,37,44)) 

enter image description here