2012-11-28 11 views
6

Vorrei creare un barplot in cui le barre sono tracciate sopra la linea orizzontale.trama dietro barplot

Il seguente codice esegue questa:

y <- c(1,2,3,5) 
barplot(y) 
abline(h=mean(y)) 
barplot(y, add=T) 

Tuttavia, io sono preoccupato del fatto che il parametro add=T in barplot(), se usato ripetutamente, può introdurre artefatti di stampa. Sono curioso di sapere se esiste un'alternativa al codice precedente (sebbene il codice sopra possa essere il metodo più veloce).

risposta

11

Si può solo tracciare nulla nella vostra prima chiamata:

y <- c(1,2,3,5) 
barplot(rep(NA,length(y)),ylim=c(min(0,y),max(y)),axes=FALSE) 
abline(h=mean(y)) 
barplot(y, add=T) 

enter image description here

+0

Modificato in modo che ylim = c (min (0, y), max (y)) nel caso y contenga valori negativi –

7

Se si utilizza ggplot2, non ci si deve preoccupare di questo. Il tuo problema si riduce al fine geom:

ggplot(data.frame(x=1:4, y=y), aes(x=x, y=y)) + 
    geom_bar(stat="identity") + 
    geom_hline(yintercept=mean(y), color="red") 

line in front

In confronto:

ggplot(data.frame(x=1:4, y=y), aes(x=x, y=y)) + 
    geom_hline(yintercept=mean(y), color="red") + 
    geom_bar(stat="identity") 

line behind

+0

Grazie, è utile sapere. Dovrei dare a 'ggplot2' un altro aspetto. – andrewj

Problemi correlati