2012-04-02 20 views
22

Dies ist eine grundlegende Frage, aber ich kann keine Antwort finden. Ich erzeuge etwa 9 Barplots innerhalb eines Panels und jeder Barplot hat etwa 12 Bar. Ich gebe alle 12 Etiketten in meiner Eingabe, aber R benennt nur alternative Balken. Dies ist offensichtlich auf einige Standardeinstellungen in R zurückzuführen, die geändert werden müssen, aber ich kann sie nicht finden.Wie werden alle x Etiketten in R-Barplot angezeigt?

+2

Machen Sie das Plotten Leinwand größer – James

Antwort

23

Sie können möglicherweise alle Etiketten angezeigt werden, wenn Sie las=2 innerhalb der plot() Aufruf verwenden. Andernfalls müssen Sie xaxt="n" verwenden und dann die Etiketten mit einem separaten Anruf an axis(1, at= ..., labels=...) setzen.

ist eine weitere Methode, um zuerst die Mittelpunkte zu sammeln und dann Text() verwenden, mit XPD und srt den Grad der Textdrehung zu steuern:

text(x=midpts, y=-2, names(DD), cex=0.8, srt=45, xpd=TRUE) 

Der y-Wert der Koordinaten unter Verwendung von in der werden muss gewählt geplottete Fläche.

+2

Las = 2, funktioniert gut und ist besonders nützlich mit so vielen Bars – user2760

+1

Der "las = 2" Vorschlag funktioniert, aber 'Achse (...)' nicht. 'axis()' wird von 'barplot()' in erster Linie verwendet; wenn es alleine aufgerufen wird, wird es wieder versuchen, nicht überlappende Tick-Label zu zeichnen (wie es die "Achse" nennt). –

+0

Es hängt von dem speziellen Fall ab. In dem Fall, dass Sie diesen Code angeboten haben, fügen Sie bei jedem Tick Labels hinzu: 'axis (1, at = Mittelpunkte, Labels = Namen (DD), cex.axis = 0.7)' –

16

gedreht Etiketten auf einem Sockel R BarPlot zu erhalten, könnte man (wie ich hier tun) anpassen eines der in der Vignette gegebenen Beispiele für die gridBase Paket:

library(grid) 
library(gridBase) 

## Make some data with names long enough that barplot won't print them all 
DD <- table(rpois(100, lambda=5)) 
names(DD) <- paste("long", names(DD), sep="_") 

## Plot, but suppress the labels 
midpts <- barplot(DD, col=rainbow(20), names.arg="") 

## Use grid to add the labels  
vps <- baseViewports() 
pushViewport(vps$inner, vps$figure, vps$plot) 

grid.text(names(DD), 
    x = unit(midpts, "native"), y=unit(-1, "lines"), 
    just="right", rot=50) 

popViewport(3) 

enter image description here

+0

Hmm. Ich bekomme nur "konnte nicht finden Funktion" pushViewport "so denke ich, das ist alt – Dirk

+1

@Dirk Danke für den Kommentar Sieht aus, als ob Sie jetzt explizit das ** Grid ** -Paket laden müssen. Ich habe gerade diese Bearbeitung, und es funktioniert jetzt wie beabsichtigt. –

Verwandte Themen