我需要创建一个严重倾斜的变量的直方图和密度图。直方图条应着色以反映高于和低于特定阈值的值。以下代码有效:
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.有什么方法可以实现?