2012-12-18 31 views
6

Ich Plotten Balkendiagramm mit dem folgenden Code:Wie kontrolliere ich den Abstand zwischen Balken?

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

Die Ausgabe wie folgt kommt:

enter image description here

aber was ich will, ist, dass die "Hindi R/w" und „Speak "sollte ohne jede Lücke kombinieren, und dann kommt ein Leerzeichen und dann sollten" English R/w "und" Speak "kombiniert werden. Wie mache ich das?

Antwort

6

Sie sollten das Argument space= zu Ihrer barplot() Funktion hinzufügen, wobei Zahlen dem Leerzeichen vor jedem Balken entsprechen.

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

Dies beantwortet die Frage, aber (für mich) nicht das Problem, dass die Daten aus dem OP derzeit nicht in einem sehr nützlichen Format für die "Barplot" -Funktion sind. – A5C1D2H2I1M1N2O1R2T1

6

Ihr Leben wäre viel einfacher, wenn Ihre Daten formatiert richtig waren. Die barplot Funktion übernimmt die Eingabe eines vector oder matrix. Wenn die Eingabe eine matrix ist, kann R die dimnames verwenden, um Dinge automatisch für Sie zu kennzeichnen.

Versuchen Sie folgendes:

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

Wenn der Abstand zwischen den beiden Gruppen zu groß ist, dann wird der Vorschlag von @Didzis auch hier angemessen ist. In space = c(0, .2) zu Ihrem barplot Befehl, unter Berücksichtigung der Angaben aus der Dokumentation:

Wenn height eine Matrix ist und beside ist TRUE, space durch zwei Zahlen angegeben werden kann, wobei der erste der Raum zwischen den Stäben in der ist gleiche Gruppe, und der zweite Raum zwischen den Gruppen. Wenn nicht explizit angegeben, wird standardmäßig c(0,1) verwendet, wenn height eine Matrix ist und daneben TRUE und andernfalls 0.2.

Verwandte Themen