ошибка geom_boxplot + scale_y_log10 - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь создать несколько блочных диаграмм логнормальных данных по группам, используя как geom_boxplot, так и scale_y_log10. Когда я проверил графики с фактическими значениями для медианы и других квартилей, я понял, что некоторые из коробочных диаграмм были построены неправильно, то есть медиана и / или другие квартили были не в нужном месте. После долгих испытаний я понял, что при использовании geom_boxplot и scale_y_log10 группы с двумя значениями дают только ошибочные графики.

Вот код для тестового примера:

f1 <- function(x) {
log10(mean(10 ^ x))
}

library(ggplot2)

test1 <- data.frame("value" = c(3, 45, 2, 100),
               "field" = c("a", "a", "a", "a"),
               "group" = c("1", "1", "2", "2"))

test2 <- data.frame("value" = c(3, 10, 45, 2, 70, 100),
               "field" = c("a", "a", "a", "a", "a", "a"),
               "group" = c("1", "1", "1", "2", "2", "2"))

tapply(test1$value, test1$group, median, na.rm = TRUE)
tapply(test1$value, test1$group, mean, na.rm = TRUE)

ggplot(test1, aes(x=field, y=value)) + geom_boxplot() + facet_grid(~ group) +
geom_hline(yintercept = c(24, 51), colour="blue", linetype=2) +
geom_hline(yintercept = c(24, 51), colour="red", linetype=2) +
scale_y_log10() +
stat_summary(fun.y=f1, geom="point", shape=1, size=3, color="red", 
fill="red") +
theme(legend.position="none") +
scale_fill_brewer(palette="Set3")

tapply(test2$value, test2$group, median, na.rm = TRUE)
tapply(test2$value, test2$group, mean, na.rm = TRUE)

ggplot(test2, aes(x=field, y=value)) + geom_boxplot() + facet_grid(~ group)+
geom_hline(yintercept = c(10, 70), colour="blue", linetype=2) + 
geom_hline(yintercept = c(19.3, 57.3), colour="red", linetype=2) +
scale_y_log10() +
stat_summary(fun.y=f1, geom="point", shape=1, size=3, color="red", 
fill="red") +
theme(legend.position="none") +
scale_fill_brewer(palette="Set3")

Как видно из приведенных выше примеров, test1 (с двумя значениями на группу) выдает коробочные диаграммы с неправильными медианами, а test2 (с тремя значениями на группу) дает правильные коробочные диаграммы.

Есть идеи, почему это происходит?

...