2012-12-18 17 views
6

sto tramando grafico a barre utilizzando il seguente codice:Come posso controllare lo spazio tra le barre?

heights1=c(5,5,4.5,4) 
barplot(heights1, main="Language ", names.arg=c("Hindi R/W", "Speak" , "English 
R/W","Speak"), ylab=" level ", xlab="Language starting with mostly used", 
cex.names=0.8, col=c("darkblue","red")) 

L'output viene in questo modo:

enter image description here

ma quello che voglio è che la "Hindi R/w" e "Speak "dovrebbe combinare senza alcun gap, e poi uno spazio viene e poi 'inglese R/w' e 'Speak' dovrebbe combinare. Come faccio a fare questo?

risposta

6

È necessario aggiungere l'argomento space= alla funzione barplot(), dove i numeri corrispondono allo spazio prima di ogni barra.

heights1=c(5,5,4.5,4)  
barplot(heights1, main="Language ", names.arg=c("Hindi R/W", "Speak" , "English 
    R/W","Speak"), ylab=" level ", xlab="Language starting with mostly used", 
    cex.names=0.8, col=c("darkblue","red"),space=c(0.2,0,0.2,0)) 

enter image description here

+0

Questo risponde alla domanda, ma (per me) non affronta il problema che i dati dall'OP non sono attualmente in un formato molto utile per la funzione 'barplot'. – A5C1D2H2I1M1N2O1R2T1

6

La tua vita sarebbe molto più facile se i tuoi dati sono stati correttamente formattati. La funzione barplot riceve l'input di un vector o matrix. Quando l'ingresso è un matrix, R può utilizzare il dimnames di etichettare automaticamente le cose per voi.

Prova questo:

heights1 = c(5, 5, 4.5, 4) 
barplot(t(matrix(heights1, ncol=2, byrow=TRUE, 
       dimnames=list(c("Hindi", "English"), 
           c("Read/Write", "Speak")))), 
     main="Language ", ylab="Level", 
     xlab="Language starting with mostly used", 
     col=c("darkblue", "red"), 
     beside=TRUE, ylim = c(0, 6), 
     legend.text = TRUE, 
     args.legend = list(x = "topright")) 

enter image description here

Se la distanza tra i due gruppi è troppo, poi il suggerimento di @Didzis è appropriato anche qui. Aggiungere space = c(0, .2) al comando barplot, tenendo conto delle particolari dalla documentazione:

Se height è una matrice e beside è TRUE, space determinate con due numeri, dove il primo è lo spazio tra le barre nella stesso gruppo, e il secondo lo spazio tra i gruppi. Se non viene indicata in modo esplicito, il valore predefinito è c(0,1) se l'altezza è una matrice e accanto è TRUE, e 0.2 altrimenti.

Problemi correlati