Mam więc dość duży zbiór danych (Dropbox: csv file), który próbuję wykreślić za pomocą geom_boxplot
. Poniższa produkuje to, co wydaje się być rozsądnym działki:mediany boxplot ggplot2 nie są zgodne z oczekiwaniami
require(reshape2)
require(ggplot2)
require(scales)
require(grid)
require(gridExtra)
df <- read.csv("\\Downloads\\boxplot.csv", na.strings = "*")
df$year <- factor(df$year, levels = c(2010,2011,2012,2013,2014), labels = c(2010,2011,2012,2013,2014))
d <- ggplot(data = df, aes(x = year, y = value)) +
geom_boxplot(aes(fill = station)) +
facet_grid(station~.) +
scale_y_continuous(limits = c(0, 15)) +
theme(legend.position = "none"))
d
Jednak, kiedy kopać głębiej, problemy pełzanie, które mnie przerażają. Kiedy oznaczałem medianami boxplot ich wartości, pojawia się następujący wykres.
df.m <- aggregate(value~year+station, data = df, FUN = function(x) median(x))
d <- d + geom_text(data = df.m, aes(x = year, y = value, label = value))
d
Mediany nakreślonego przez geom_boxplot nie są median w ogóle. Etykiety są drukowane z prawidłową wartością osi y, ale środkowy zawias na płaszczyznach pudełka zdecydowanie nie znajduje się na medianach. Byłem zaskoczony przez to od kilku dni.
Jaki jest tego powód? W jaki sposób można uzyskać ten typ wyświetlacza z prawidłowymi medianami? W jaki sposób można debugować lub diagnozować ten wykres?
Twój przykładowy kod zawiera niespójność. Wywołujesz 'geom_text' przeciwko' temp.m', ale mediana została obliczona na 'turb.m'. Czy to może być problem? – vpipkt
Ah! Wezwanie do tego ... Próbowałem usunąć moje niespójności z oryginalnego kodu, ale tęskniłem za tym. Ten błąd spowodowałby awarię warstwy geom_text, ale nawet bez dodania geom_text do wykresu, mediany są nadal rysowane niepoprawnie na działkach. –
Czy "*" w polu "wartość" należy interpretować jako NA? – vpipkt