2010-04-20 24 views
47

Sto costruendo un grafico a barre per le quali bastano le barre come indicazioni di posizionamento orizzontale (x), quindi mi piacerebbe evitare di disegnare le linee verticali superflue.Come posso sopprimere la griglia verticale in un grafico ggplot2?

Capisco come modellare le griglie minori e principali in opts(), ma non posso per la vita di me capire come sopprimere solo le griglie verticali.

library(ggplot2) 

data <- data.frame(x = 1:10, y = c(3,5,2,5,6,2,7,6,5,4)) 

ggplot(data, aes(x, y)) + 
    geom_bar(stat = 'identity') + 
    opts(
    panel.grid.major = theme_line(size = 0.5, colour = '#1391FF'), 
    panel.grid.minor = theme_line(colour = NA), 
    panel.background = theme_rect(colour = NA), 
    axis.ticks = theme_segment(colour = NA) 
) 

A questo punto, che sta cercando come ho intenzione di avere a sopprimere tutte le griglie e poi tirarsi indietro con geom_hline(), che sembra una specie di dolore (anche, non è del tutto chiaro come posso trovare il tick/principali posizioni della griglia per alimentare geom_hline().)

Ogni pensiero sarebbe apprezzato!

risposta

11

Try usando

scale_x_continuous (pause = NULL)

Questo eliminerebbe tutte le linee verticali e di asse x etichette TickMark.

+4

Questo ha funzionato, ma ora, come hai notato, non ho le etichette sull'asse x, di cui ho bisogno - qualche idea su come scriverle di nuovo? – Tarek

+1

geom_text (aes (label = x, y = -.5)) dovrebbe funzionare – learnr

+17

La nuova versione dice "Si prega di usare pause = NULL per rimuovere le interruzioni nella scala. (Obsoleto, ultimo utilizzato nella versione 0.8.9) ' –

4

Questo ti lascia solo con i punti dati:

ggplot(out, aes(X1, X2)) + 
    geom_point() + 
    scale_x_continuous(breaks = NULL) + 
    scale_y_continuous(breaks = NULL) + 
    opts(panel.background = theme_blank()) + 
    opts(axis.title.x = theme_blank(), axis.title.y = theme_blank()) 
95

A partire dal ggplot2 0.9.2, questo è diventato molto più più facile da fare usando "temi". È ora possibile assegnare temi separatamente a panel.grid.major.x e panel.grid.major.y, come illustrato di seguito.

# simulate data for the bar graph 
data <- data.frame(X = c("A","B","C"), Y = c(1:3))  

# make the bar graph 
ggplot(data ) + 
    geom_bar(aes(X, Y)) + 
    theme(# remove the vertical grid lines 
      panel.grid.major.x = element_blank() , 
      # explicitly set the horizontal lines (or they will disappear too) 
      panel.grid.major.y = element_line(size=.1, color="black") 
    ) 

Il risultato di questo esempio è abbastanza brutto da vedere, ma dimostra come rimuovere le linee verticali, preservando le linee orizzontali e tick-contrassegni dell'asse x.

Problemi correlati