График плотности ggplot дает неожиданный результат
У меня есть вопрос относительно плотностных графиков с использованием ggplot. Чтобы прояснить мою проблему, я создал следующие примеры данных:
DT2 <- data.table(Rating = c(1:19),
Nndef = c(50, 30, 70, 70, 60, 40, 60, 30, 30, 10,
5, 3, 1, 0, 0, 0, 0, 0, 0))
Теперь я хочу построить график плотности числа Nndefs на категорию рейтинга. Перед тем, как сделать это, я копирую каждую строку по количеству Nndef, так что каждая категория рейтинга встречается Nndef раз.
DT2 <- DT2[rep(1:.N,Nndef)]
Теперь это должно сделать свое дело:
ggplot(DT2, aes(x =Rating))+ theme_bw() +
geom_density(aes(x=Rating))
На самом деле это то, что я ожидаю, используя эти данные. Однако рассмотрим это сейчас
DT1 <- data.table(Rating = c(1:19),
Nndef = c(460, 480, 1300, 2600, 5700, 4700, 9300, 10600, 7700, 8200,
6500, 6700, 5300, 4700, 2700, 1100, 1200, 400, 420))
DT1 <- DT1[rep(1:.N,Nndef)]
ggplot(DT1, aes(x =Rating))+ theme_bw() +
geom_density(aes(x=Rating))
Я знаком с adjust
аргумент в geom_density
но я бегу много этих ggplots в for
петля. Я хочу получить плавный график плотности (как и первый, использующий DT2), но не хочу вручную настраивать каждую фигуру самостоятельно. Кроме того, я не понимаю, почему оно дает странное распределение плотности в последнем случае и достаточно точное в первом случае. Какие-нибудь мысли?
заранее спасибо
1 ответ
Вы можете ограничить поправочный коэффициент до доли уникальных значений "x":
ggplot(DT1, aes(x =Rating))+ theme_bw() +
geom_density(aes(x=Rating), adjust=length(unique(x))/10)