2013-03-26 27 views
9

Ciao caro, stavo cercando di creare un grafico a barre in ggplot ma non ho ottenuto il risultato. Il frame di dati è la seguente:Creazione di un grafico a barre in ggplot con etichette verticali nell'asse x

z=data.frame(x1=read.table(textConnection(" 
Indicador 
Total 
Max. 
          Min. 
          Mean 
          Promedio.Aparatos 
          Promedio.Automotriz 
          Promedio.Belleza 
          Promedio.C.Internet 
          Promedio.Comp 
          Promedio.Deportes 
          Promedio.Educación 
          Promedio.Entretenimiento 
          Promedio.Gasolina 
          Promedio.C.Comerciales 
          Promedio.ATMs 
          Promedio.Hogar 
          Promedio.Libros.y.Música 
          Promedio.Moda 
          Promedio.Pagos.e.Impuestos 
          Promedio.Salud 
          Promedio.Servicios.Varios 
          Promedio.Supermercados 
          Promedio.Telefonia 
          Promedio.Viajes 
          Porcentaje.Aparatos 
          Porcentaje.Automotriz 
          PorcentajeBelleza 
          PorcentajeCompras.en.Internet 
          PorcentajeComputación 
          PorcentajeDeportes 
          PorcentajeEducación 
          PorcentajeEntretenimiento 
          PorcentajeGasolina 
          PorcentajeCentros.Comerciales 
          PorcentajeATMs 
          PorcentajeHogar 
          PorcentajeLibros.y.Música 
          PorcentajeModa 
          PorcentajePagos.e.Impuestos 
          PorcentajeSalud 
          PorcentajeServicios.Varios 
          PorcentajeSupermercados 
          PorcentajeTelefonia 
          PorcentajeViajes 
          "),header=T), 
x2=read.table(textConnection(" 
Número 
36001 
35916 
          12320 
          35889 
          4487 
          2751 
          673 
          1023 
          1062 
          4602 
          824 
          4438 
          4021 
          2577 
          31845 
          5443 
          641 
          6982 
          32868 
          4696 
          1594 
          9746 
          6239 
          13170 
          3973 
          2526 
          540 
          834 
          964 
          4291 
          755 
          3627 
          3254 
          2186 
          30356 
          4855 
          488 
          6612 
          33079 
          4105 
          1314 
          9284 
          5777 
          9666 
          "),header=TRUE)) 

Ho costruito questo data.frame perché voglio lavorare con i dati ordinati

tabla=z[order(z$Número,decreasing=TRUE),] 

stavo cercando con ggplot ma non ho ricevuto il mio grafico a barre con etichette verticali relative alla variabile Indicador. Vorrei, in asse x variabile Indicador e variabile sull'asse y Número ma con questo codice ottengo una trama brutta:

qplot(Indicador, data = tabla, geom = "bar") 

e tutte le etichette di asse x sono in una sola linea. Grazie per il vostro aiuto e qualcuno potrebbe aiutarmi come posso mettere il colore nelle barre.

risposta

33

Per un migliore controllo dei parametri utilizzati, funzione ggplot().

Innanzitutto, è necessario riordinare la variabile Indicador in base a Número per ottenere le barre ordinate. Segno meno prima tabla$Número significa ordine inverso (dal più alto al più basso).

tabla$Indicador<-reorder(tabla$Indicador,-tabla$Número) 

Poi è necessario fornire valori xey e utilizzare stat="identity" all'interno del geom_bar() per tracciare i valori effettivi. Con theme() e axis.text.x= è possibile modificare la direzione del testo e anche regolare la posizione verticale e orizzontale dei testi sotto l'asse x.

ggplot(tabla,aes(Indicador,Número))+ 
    geom_bar(stat="identity")+ 
    theme(axis.text.x=element_text(angle=90,hjust=1,vjust=0.5)) 

enter image description here

Suggerimento: Nelle pubblicazioni, sembra meglio usare qualcosa come 45 gradi:

theme(axis.text.x=element_text(angle=45,hjust=1,vjust=0.5)) 
Problemi correlati