Вот решение, которое должно заставить вас двигаться в правильном направлении.Мне любопытно посмотреть, есть ли более эффективные способы сделать это, поскольку это кажется немного хакерским и запутанным.Мы можем использовать встроенный аргумент ..density..
для y aesthetic
, но факторы там не работают.Поэтому нам также нужно использовать scale_x_discrete
, чтобы соответствующим образом обозначить ось после того, как мы преобразовали test2
в числовой объект.
ggplot(data = test, aes(x = as.numeric(test2)))+
geom_bar(aes(y = ..density..), binwidth = .5)+
scale_x_discrete(limits = sort(unique(test$test2))) +
facet_grid(~test1) + xlab("Test 2") + ylab("Density")
Но позвольте мне вкратце рассказать мне, что вы думаете.
Кроме того, вы можете сократить создание тестовых данных примерно так, чтобы избежать лишних объектов в вашей среде и необходимости связывать их вместе:
test <- data.frame(
test1 = sample(letters[1:2], 100, replace = TRUE),
test2 = sample(letters[3:8], 100, replace = TRUE)
)