2016-06-01 16 views
5

Jeśli używasz funkcji przy użyciu funkcji ggplot, jak oddzielnie zmienić rozmiar punktu i grubość linii?Oddzielne rozmiary punktów i linii w geom_pointrange od ggplot

przykład:

# make test data 
df <- data.frame(y=10, ymin=1, ymax=20, x=1) 

# store ggplot object 
p <- ggplot(data=df, aes(y=y, ymin=ymin, ymax=ymax, x=x)) 

# plot 1: big dot and thick line 
p + geom_pointrange(fill='blue', color='grey', shape=21, size=5) 

# plot 2: small dot and thin line (I want small dot and thick line or vice versa) 
p + geom_pointrange(fill='blue', color='grey', shape=21, lwd=1, size=5) 

Wykres 1:

enter image description here

Wykres 2:

enter image description here

można uzyskać małe kropki grubą linią (lub vice -versa)?

Obejście może polegać na wykreślaniu linii i punktowania jako oddzielnych geomów przy użyciu geom_point i geom_errorbar. Niestety, moja prawdziwa aplikacja wymaga drgań, więc punkt i interwał kończą się w różnych miejscach (chyba że mogę kontrolować drgania?).

Podobne pytania można znaleźć na stronie SO (like this), ale nie odpowiadają one bezpośrednio na tę wiadomość.

Dzięki!

Odpowiedz

8

Można użyć fatten w połączeniu z size:

p + geom_pointrange(fill='blue', color='grey', shape=21, fatten = 20, size = 5) 

enter image description here

p + geom_pointrange(fill='blue', color='grey', shape=21, fatten = .5, size = 5) 

enter image description here

s. ?geom_pointrange:

fatten
mnożnikowy czynnik stosowany w celu zwiększenia rozmiaru środkowego paska w geom_crossbar() i punktem środkowym w geom_pointrange().

+0

Co ciekawe, 'fatten' wydaje się działać w systemie Windows, ale nie w środowisku Unix. jakieś pomysły? – dmp

+0

Próbowałem na komputerze Mac, nie mam pojęcia, jaki to może być problem, być może Twoja wersja R i ggplot2 wymaga aktualizacji? – beetroot

Powiązane problemy