2012-02-07 14 views
24

Sto usando ggplot2 per creare alcuni grafici di dispersione abbastanza semplici. Al momento ho due linee verticali che utilizzano semplici:ggplot2 - area di ombreggiatura tra due linee verticali

... + geom_vline(xintercept=159684.186,linetype="dotted",size=0.6)+ 
geom_vline(xintercept=159683.438,linetype="dotted",size=0.6)+ ... 

Qualcuno può dirmi come per ombreggiare l'area tra queste due linee dalla parte superiore dell'asse Y per l'asse X?

risposta

36

È possibile utilizzare geom_rect.

... + geom_rect(aes(xmin=159683.438, xmax=159684.186, ymin=0, ymax=Inf)) 

I due valori per x provengono dai vostri geom_vline chiamate. usando ymin=0 porta a 0; ymax=Inf prenderà tutto in cima all'asse. Se si desidera che passi fino all'asse x anziché a 0, è possibile utilizzare ymin=-Inf.

Alcune note:

Questo funziona meglio se è presto in ordine di GEOMs in modo che venga disegnato per primo/al di sotto delle altre parti (in particolare i dati a dispersione).

È possibile impostare il colore di riempimento (fill estetico) al di fuori della chiamata aes a un valore fisso. Vorrei anche impostare la trasparenza (alpha) su qualcosa di simile a 0.5 in modo che la roba dietro di essa (le linee della griglia, molto probabilmente, se la metti come prima geom), sia ancora visibile.

+0

dire che gli xax sono anni e vuoi sfumare 1 anno su 2. come farlo? aes non supporta le liste per gli attributi ymin, xmax, ymax – tagoma

+0

Grazie. Si noti che '' fill'' NOT '' color'' è la parola chiave qui! – PatrickT

+0

@PatrickT Grazie. Chiarito questo nella risposta. –

10

Potrebbe essere ancora più semplice utilizzare annotate() per questo se si conoscono le coordinate per quale regione si desidera ombreggiare. Ho avuto alcuni strani problemi di rendering quando ho provato a usare geom_rect().

library(ggplot2) 
data(mtcars) 

ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point() + 
    annotate("rect", xmin = 3, xmax = 4.2, ymin = 12, ymax = 21, 
     alpha = .2) 

So che è essenzialmente la stessa cosa; Mi è appena capitato di incappare in questo bocconcino dal here.

+0

Mi piace molto questo approccio, in quanto mi permette di avere scale di colori e dimensioni. – Chef1075

+0

Ottimo approccio. È consentita più istruzioni 'annotate'. Come detto, gli argomenti 'color' e' fill' sono facilmente controllabili. L'argomento 'trasparenza alfa' dà un bell'aspetto. –

Problemi correlati