Я пытаюсь использовать facet_wrap, и это не всегда отображается.
Я создал воспроизводимый пример, который генерирует информацию для оценки класса по предмету. В первом примере я могу сказать, что он работает просто отлично, и я вижу скрипку для каждого предмета (математика, чтение и письмо), но во втором примере ничего не отображалось для предмета «Математика».
Единственное изменение, которое я сделал между первым и вторым примером, - это удаление одного «математического» наблюдения для каждого класса из данных. Может быть, для отображения графика требуется минимальное количество значений? Это причина? я могу обойти это ограничение? (Я не хочу создавать ложную информацию, я хотел бы использовать информацию как есть).
Кроме того, во втором примере я получаю следующее предупреждение, может быть, это поможет:
In max (плотность данных $): нет не пропущенных аргументов для max;return -Inf
info <- data.frame("Class" = c("A","A","A","A","A","A","A","A","A",
"B","B","B","B","B","B","B","B","B",
"C","C","C","C","C","C","C","C","C",
"D","D","D","D","D","D","D","D","D"),
"Subject" = c("Math","Math","Math","Reading","Reading","Reading","Writing","Writing","Writing",
"Math","Math","Math","Reading","Reading","Reading","Writing","Writing","Writing",
"Math","Math","Math","Reading","Reading","Reading","Writing","Writing","Writing",
"Math","Math","Math","Reading","Reading","Reading","Writing","Writing","Writing"),
"Score" = c(round(runif(36,0,100))))
library("ggplot2")
ggplot(data = info, aes(x = Class, y = Score)) +
geom_violin(trim = FALSE) +
facet_wrap(~Subject)
# Same as info, just one less "Math" observation per class
infoLess <- data.frame("Class" = c("A","A","A","A","A","A","A","A",
"B","B","B","B","B","B","B","B",
"C","C","C","C","C","C","C","C",
"D","D","D","D","D","D","D","D"),
"Subject" = c("Math","Math","Reading","Reading","Reading","Writing","Writing","Writing",
"Math","Math","Reading","Reading","Reading","Writing","Writing","Writing",
"Math","Math","Reading","Reading","Reading","Writing","Writing","Writing",
"Math","Math","Reading","Reading","Reading","Writing","Writing","Writing"),
"Score" = c(round(runif(32,0,100))))
ggplot(data = infoLess, aes(x = Class, y = Score)) +
geom_violin(trim = FALSE) +
facet_wrap(~Subject)
Результат первого графика
Результат второго графика