Редактировать:
Вот как минимальный воспроизводимый пример для вашего вопроса может выглядеть так:
matrix <- structure(list(Day = c(10L, 10L, 18L, 18L, 18L, 50L, 50L, 80L, 80L, 10L, 10L, 18L, 18L, 50L, 50L, 80L, 80L),
Treatment = c("low", "low", "low", "low", "low", "low", "low", "low", "low", "normal", "normal", "normal", "normal", "normal", "normal", "normal", "normal"),
Proportion = c(8.62, NA, 30.5, NA, NA, 26.1, 31.9, 12.7, 26.2, NA, 17.2, 3.96, NA, 25.6, 17.5, 19, NA)),
class = "data.frame", row.names = c(NA, -17L))
Предлагаемый ответ с использованием factor
для «дискретизации» переменная Day
:
ggplot(data=matrix,aes(x=factor(Day), y=Proportion, fill=Treatment)) +
geom_boxplot(position=position_dodge(1)) +
labs(x ="Day")
Объяснение: Если мы передадим непрерывную переменную оси 'x' для блок-графика, ggplot2
не преобразует ось в дискретную переменную. Следовательно, при отсутствии переменной группировки мы получаем только один блок. Но если мы преобразуем переменную в нечто дискретное , например, в множитель, строку или дату, мы получим желаемое поведение.
Кроме того, когда вы используете dput
или один из описанные методы здесь гораздо проще найти и протестировать ответ, чем пытаться работать с описанием данных, как в вопросе (или, по крайней мере, я не мог понять, как загрузить эти примеры данных)
PS Я думаю, что немного странно называть переменную класса data.frame
'matrix', поскольку matrix
- это собственный тип данных в R ...;)