2012-04-02 13 views
22

Esta es una pregunta básica pero no puedo encontrar una respuesta. Estoy generando aproximadamente 9 barras en un panel y cada barra tiene alrededor de 12 barras. Proporciono las 12 etiquetas en mi entrada, pero R solo nombra barras alternativas. Esto se debe obviamente a alguna configuración predeterminada en R que debe cambiarse pero no puedo encontrarla.¿Cómo mostrar todas las etiquetas x en la barra de barra R?

+2

Haga que el lienzo de ploteo sea más grande – James

Respuesta

23

Puede obtener todas las etiquetas para que aparezcan si usa las=2 dentro de la llamada plot(). De lo contrario, deberá usar xaxt="n" y luego colocar las etiquetas con una llamada separada al axis(1, at= ..., labels=...).

Otro método es recoger primero los puntos medios y luego utilizar el texto() con XPD y srt para controlar el grado de rotación de texto:

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

El valor de y debe ser elegido usando las coordenadas en el área trazada.

+2

las = 2, funciona bien y es especialmente útil con tantas barras – user2760

+1

La sugerencia 'las = 2' funciona, pero' axis (...) 'no. 'axis()' es lo que está usando 'barplot()' en primer lugar; cuando se llama por sí mismo, volverá a intentar "no dibujar etiquetas de ticks superpuestas" (como lo expresó '? axis'). –

+0

Depende del caso particular. En el caso que ofrezca este código, agregue etiquetas en cada tilde: 'axis (1, at = midpts, labels = names (DD), cex.axis = 0.7)' –

16

Para obtener etiquetas rotadas en un barplot base de R, usted podría (como lo hago aquí) adaptar uno de los ejemplos dados en la viñeta de la gridBase paquete:

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. Acabo de obtener "could not find function" pushViewport ", así que supongo que esto es viejo – Dirk

+1

@Dirk Gracias por el comentario Parece que ahora tiene que cargar explícitamente el paquete ** grid **. Acabo de hacer esa edición, y ahora funciona Como era la intención. –

Cuestiones relacionadas