Мне нужно создать гистограмму и график плотности сильно искаженной переменной.Полосы гистограммы должны быть цветными, чтобы отражать значения выше и ниже определенного порога.Работает следующий код:
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)
Мои реальные данные гораздо более искажены, поэтому мне нужно преобразовать их в журнал.Я использую scale_x_log10()
из библиотеки scales
:
library(scales)
p = p + scale_x_log10()
print(p)
Однако, когда я делаю это, гистограмма «искажается», причем каждая цветовая группа масштабируется отдельно, поэтому красные столбцы с большим количествомкороче синих полос с меньшим счетом:
Я пытался использовать ..count../sum(..count..)
вместо stat(density)
, но в то время как гистограмма выглядит хорошо,график плотности масштабируется по-разному и выглядит сжатым внизу:
В идеале я хотел бы иметь гистограмму на рис.3 + график плотности на рис.2. Есть ли способ добиться этого?