具有条件着色的对数刻度变量的直方图和密度

时间:2019-02-22 22:04:32

标签: r ggplot2 histogram scale

我需要创建一个严重倾斜的变量的直方图和密度图。直方图条应着色以反映高于和低于特定阈值的值。以下代码有效:

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.有什么方法可以实现?

0 个答案:

没有答案