2013-11-27 9 views
5

perche il seguenteTronca bar più alto in ggplot

library(ggplot) 
data <- data.frame(qnt=c(10,20,22,12,14,9,1000),lbl=c("A","B","C","D","E","F","G")) 
ggplot(data=data, aes(x=lbl, y=qnt)) + geom_histogram(stat="identity") 

che produce

enter image description here

quali opzioni ho in considerazione per troncare il bar più alto G nella trama? (ovviamente spiegando allo spettatore cosa ho fatto)

risposta

0

È possibile utilizzare coord_cartesian() e modificare i limiti per l'asse y - coord_cartesian() "ingrandirà" il grafico fino ai limiti che fornirà. Inoltre ho usato geom_bar() come sono i fattori di tracciamento sull'asse x.

ggplot(data=data, aes(x=lbl, y=qnt)) + geom_bar(stat="identity")+ 
    coord_cartesian(ylim=c(0,100)) 

Un'altra possibilità è utilizzare la scala del logaritmo per i valori y.

ggplot(data=data, aes(x=lbl, y=qnt)) + geom_bar(stat="identity")+ 
    scale_y_log10() 
+0

è 'coord_cartesian()' non è compatibile con 'coord_flip()'? Non sembrano lavorare insieme ... – CptNemo

+0

Se hai bisogno dell'asse di inversione, usa + coord_flip (ylim = c (0,100)) –

4

Se si vuole perdere tempo con esso, è possibile utilizzare il pacchetto gridExtra, e la trama 2 (o più) tagliato le sezioni del grafico. Ho armeggiato con i margini per farlo allineare, ma un piano migliore sarebbe probabilmente per formattare le etichette degli assi per la stessa larghezza del testo,

enter image description here

require(ggplot2) 
require(gridExtra) 
data <- data.frame(qnt=c(10,20,22,12,14,9,1000),lbl=c("A","B","C","D","E","F","G")) 

g1<-ggplot(data=data, aes(x=lbl, y=qnt)) + 
    geom_histogram(stat="identity")+ 
    coord_cartesian(ylim=c(-10,50)) + 
    labs(x=NULL, y=NULL)+ 
    theme(plot.margin=unit(c(2,2,6,3),"mm")) 


g2<-ggplot(data=data, aes(x=lbl, y=qnt)) + 
    geom_histogram(stat="identity") + 
    coord_cartesian(ylim=c(990,1010)) + 
    theme(axis.text.x = element_blank(), 
     axis.title.x = element_blank(), 
     axis.title.y = element_blank(), 
     axis.ticks.x = element_blank()) + 
    labs(x=NULL, y=NULL) + 
    theme(plot.margin=unit(c(5,2,0,0),"mm")) 

grid.arrange(g2,g1, heights=c(1/4, 3/4), ncol=1, nrow=2)