Гистограмма и плотность логарифмической переменной с условной окраской - PullRequest
0 голосов
/ 23 февраля 2019

Мне нужно создать гистограмму и график плотности сильно искаженной переменной.Полосы гистограммы должны быть цветными, чтобы отражать значения выше и ниже определенного порога.Работает следующий код:

library(ggplot2)

set.seed(43)
dd = data.frame(x = rlnorm(1000, 10))

p = ggplot(dd, aes(x)) + 
  geom_histogram(aes(y = stat(density), fill = factor(x > mean(x))), 
                 color = "black") +
  stat_bin(aes(y = stat(density),
              label = ifelse(..count.. > 0, ..count.., "")),
           geom = "text", vjust = -.5) +
  guides(fill = FALSE)+
  geom_density(aes(y = stat(density)),
               color = "blue", fill = "blue", alpha = .1)
print(p)

enter image description here

Мои реальные данные гораздо более искажены, поэтому мне нужно преобразовать их в журнал.Я использую scale_x_log10() из библиотеки scales:

library(scales)
p = p + scale_x_log10()
print(p)

Однако, когда я делаю это, гистограмма «искажается», причем каждая цветовая группа масштабируется отдельно, поэтому красные столбцы с большим количествомкороче синих полос с меньшим счетом:

enter image description here

Я пытался использовать ..count../sum(..count..) вместо stat(density), но в то время как гистограмма выглядит хорошо,график плотности масштабируется по-разному и выглядит сжатым внизу:

enter image description here

В идеале я хотел бы иметь гистограмму на рис.3 + график плотности на рис.2. Есть ли способ добиться этого?

...