2012-02-01 3 views
12

Dodanie drugiej osi y, skalowanie jednej z pierwotnej osi y. Ten temat nie jest nowy. Zostały dotknięte czasy, na przykład on this ggplot2 google groups thread. Idąc za radą Hadleya, próbowałem dodać pomocniczą oś y przez geom_vline, geom_segment i geom_text. Ale wciąż jest brzydka.dodać pomocniczą oś y do działek ggplot2 - zrób to idealnie

Chciałbym prosić o pomoc w jej doskonaleniu. Myślę, że wielu użytkowników ggplot2 byłby zainteresowany tym tematem i wolałby mieć jakikolwiek swój wkład lub wiedzę. Z góry dziękuję.

######################################### 
# what I have gotten. 
library(ggplot2) 

# build up a box plot 
p <- ggplot(mtcars, aes(factor(cyl), mpg)) 

# add the secondary y axis on right side of the plot 
p + geom_boxplot() + geom_vline(xintercept = 3.5) + 
geom_segment(aes(x=3.49, y=c(7,14,21,28), xend = 3.52, yend = c(7,14,21,28))) + 
geom_text(aes(x=3.55, y=c(7,14,21,28), label=c(7,14,21,28))) 
+0

Generalnie nie zaleca się używania secodary oś y ... – jrara

+1

Niestety, co chcę w rzeczywistości nie jest drugorzędną oś y, to tylko etykieta. Ta etykieta jest czasami niezbędna. –

+0

Możesz chcieć edytować swoje pytanie, aby odzwierciedlić fakt, że chcesz otrzymać dodatkową etykietę. Właśnie zadałem podobne pytanie, ale specyficzne dla kontekstu kontekstowego: http://stackoverflow.com/questions/11353287/how-do-you-add-a-general-label-to-facets-in-ggplot2 –

Odpowiedz

2

Aby uniknąć włamań, można zamiast tego użyć numeru facet_grid. W zależności od twoich danych możesz go całkiem dobrze dostosować, aby uzyskać bardziej ogólną oś drugorzędną.

library(ggplot2) 
ggplot(mtcars, aes(factor(cyl), mpg)) + 
    geom_boxplot() + 
    facet_grid(cyl ~., scales = "free") 

enter image description here

+1

Wielkie dzięki, Dear Geek On Acid. To jest opcja. Ale to nie jest to, czego chcę. W moim prawdziwym przypadku mam więcej niż 50 poziomów osi X. Bardzo trudno jest naszym oczom zobaczyć fabułę z> 50 fasetkami. –