2012-02-07 34 views
24

Używam ggplot2 do tworzenia dość prostych wykresów rozproszenia. Obecnie mam dwie proste linie pionowe przy użyciu:ggplot2 - odcień pomiędzy dwiema pionowymi liniami

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

Czy ktoś może mi powiedzieć jak cień obszar pomiędzy tymi dwoma liniami od góry osi Y do osi X?

Odpowiedz

36

Możesz użyć geom_rect.

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

Dwie wartości dla x pochodzą z połączeń geom_vline. użycie ymin=0 powoduje zmniejszenie do 0; ymax=Inf spowoduje przejście do końca osi. Jeśli chcesz, aby przesunął się całkowicie do osi X zamiast 0, możesz użyć ymin=-Inf.

Kilka uwag:

To działa najlepiej, jeśli jest wcześnie w kolejności geoms tak, że pobiera on sporządzony pierwszy/poniżej pozostałych części (zwłaszcza danych Scatterplot).

Można ustawić kolor wypełnienia (estetyka fill) poza rozmową aes na stałą wartość. Ustawiłbym również przezroczystość (alpha) na wartość około 0,5, tak aby elementy leżące za nią (linie siatki, najprawdopodobniej, jeśli umieścisz je jako pierwszy element geom), nadal będą widoczne.

+0

mówią, że xaxis są latami i chcesz odcień 1 roku powyżej 2. jak to zrobić? aes nie obsługuje list dla ymin, xmax, ymax attributes – tagoma

+0

Dzięki. Zauważ, że '' fill'' NIE '' color'' jest tutaj słowem kluczowym! – PatrickT

+0

@PatrickT Dzięki. Wyjaśniono, że w odpowiedzi. –

10

Może być jeszcze łatwiej użyć do tego celu annotate(), jeśli znasz współrzędne dla regionu, który chcesz zacienić. Podczas próby użycia geom_rect() miałem dziwne problemy z renderowaniem.

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) 

Wiem, że to w gruncie rzeczy to samo; Właśnie natknąłem się na tę ciekawość od here.

+0

Bardzo podoba mi się to podejście, ponieważ pozwala mi mieć skalę kolorów i wielkości. – Chef1075

+0

Świetne podejście. Dozwolone jest wiele instrukcji 'adnotacja'. Jak już wspomniano, argumenty 'color' i' fill' są łatwo kontrolowane. Argument przejrzystości "alfa" daje ładny wygląd. –

Powiązane problemy