2011-09-28 17 views
13

Estoy tratando de hacer una barra de barras simple, pero tengo el problema de que he duplicado nombres en el eje x. Entonces, cuando intento escribir nombres en el eje X, no muestra una cadena completa. He siguientes datosCómo escribir etiquetas en barra de coordenadas en el eje x con nombres duplicados?

x <- c(1.8405917,0.3265986,1.5723623,464.7370299,0.0000000,3.2235716, 
     3.1223534, 7.0999787, 1.7122258,3.2005524,3.7531266,469.4436828) 

y estoy usando barplot

barplot(x,xlab=c("AA/AA","AA/CC","AA/AC","AA/NC","CC/AA","CC/CC","CC/AC", 
       "CC/NC","AC/AA","AC/CC","AC/AC","AC/NC")) 

Pero no funciona. También utilicé

axis() 

Pero no funciona tan bien.

Gracias de antemano.

+0

¿Recibió algún mensaje de error? –

Respuesta

20

No, xlab es para proporcionar una etiqueta para todo el eje x de la gráfica, no para etiquetar las barras individuales.

barplot() toma las etiquetas de las barras de los nombres del vector trazado (o algo que se puede derivar en un conjunto de nombres).

> names(x) <- c("AA/AA", "AA/CC", "AA/AC", "AA/NC", "CC/AA", "CC/CC", "CC/AC", 
+    "CC/NC", "AC/AA", "AC/CC", "AC/AC", "AC/NC") 
> barplot(x) 
> ## or with labels rotated, see ?par 
> barplot(x, las = 2) 

Editar: Como se menciona @Aaron, barplot() también tiene un names.arg para suministrar las etiquetas de las barras. Esto es lo que tiene que decir ?barplot:

names.arg: un vector de nombres a ser trazada debajo de cada barra o grupo de bares. Si se omite este argumento, se toman los nombres del atributo names de height si este es un vector, o los nombres de columna si es una matriz.

Lo que explica el comportamiento predeterminado si names.arg no se suministra, que es tomar los nombres del objeto trazado. Qué uso es más útil para usted será principalmente una cuestión de gusto. No tener la fila/columna/nombres puede acelerar el código ligeramente, pero muchas de las funciones de R tomarán el atributo names (o similar, por ejemplo, nombres de filas) directamente de los objetos para que no tenga que seguir proporcionando etiquetas para el trazado/etiquetado de resultados, etc.

+0

+1 Buena respuesta completa. – Aaron

10

xlab debe ser names.arg. Vea ?barplot para más detalles.

+0

+1 para anotar el argumento 'names.arg'. –

2

La forma de usar axis() es capturar los puntos medios, que es lo que devuelve la función de barra de puntos. Ver ?barplot:

mids <- barplot(x, xlab="") 

axis(1, at=mids, labels=c("AA/AA","AA/CC","AA/AC","AA/NC","CC/AA","CC/CC", 
          "CC/AC","CC/NC","AC/AA","AC/CC","AC/AC","AC/NC"), 
     las=3) 
3

Prueba esto:

barplot(x, cex.names=0.7, 
     names.arg=c("AA/AA","AA/CC","AA/AC","AA/NC","CC/AA","CC/CC","CC/AC", 
        "CC/NC","AC/AA","AC/CC","AC/AC","AC/NC")) 
Cuestiones relacionadas