Mam dane, które można wydrukować za pomocą pudełkafabuła, ale n dla każdego pola to tylko 3. Chciałbym je narysować za pomocą typu punkturange w ggplot2. Domyślnie pojawiają się jeden na drugim. Jak pogrupować swoje punkty obok siebie, gdy zostaną pogrupowane w boxplot?
library(ggplot2)
x <- rnorm(12, 3,5) # Real data are not always normally distributed.
y <- c(rep("T1", 6), rep("T2", 6))
z <- rep(c(10,20),6)
dat <- data.frame(Treatment = y, Temp = z, Meas = x)
p <- ggplot(dat, aes(Treatment, Meas))
p + geom_boxplot(aes(fill=factor(Temp)))
Edytować: Zaktualizowałem pytanie, aby wykluczyć ładowaniezgodnie z zaleceniami (oryginalnym pomysłem było użycie przedziałów ufności jako słupków błędu Zbyt wiele pytań dla jednego pytania = D). Podano bardziej szczegółowe pytanie dotyczące ładowania tutaj
Odpowiedzi:
5 dla odpowiedzi № 1Masz dwa pytania (staraj się tego unikać).
Bootstrapping. Jak bootstrapujesz z próbki 3 punktów, gdzie nie znasz podstawowej dystrybucji?
Zakresy linii. Użyłem twoich oryginalnych danych do skonstruowania zakresów linii. Do zakresu linii potrzebujesz tylko wartości minimalnej, maksymalnej i średniej:
##First rearrange your data frame dat = with(dat, dat[order(Treatment, Temp, Meas),]) dat$type = c("min", "mid", "max") library(reshape2) dat1 = dcast(dat, Treatment + Temp ~ type, value.var = "Meas")
Następnie ułożyć jak zwykle:
p = ggplot(dat1) +
geom_pointrange(aes(ymin=min, ymax=max,
y=mid,x=Treatment, group=Temp),
position=position_dodge(width=0.20))
Argumenty pozycji zatrzymują linie, które są umieszczane jedna nad drugą. To daje: