首页 > 解决方案 > 在ggplot2中绘制带有对数刻度的堆叠直方图

问题描述

注意:我发现了一个类似的问题,对此有一个解释问题的答案。但是,我正在寻找答案,而不是困难的原因(我完全理解)。

我有要为其创建直方图的数据。此数据对于 bin [0, 200) 的计数为 10000,对于多个 bin(例如 [30000, 30200))的计数为 1。这两个垃圾箱都很重要,需要可见。为此,我可以使用 log1p 比例执行直方图。

contig_len <- read.table(data_file, header = FALSE, sep = ",", col.names=c("Length"))
ggplot(contig_len, aes(x = Length)) + geom_histogram(binwidth=200) +
    scale_y_continuous(trans="log1p")

好的直方图

这完美!但是现在,我想对直方图中的项目进行分类,如下所示:

ggplot(contig_len, aes(x = Length, fill = Prevalence)) +
    geom_histogram(binwidth=200, alpha=0.5, position="stack") +
    scale_y_continuous(trans = "log1p")

坏直方图

但是,这不起作用,因为在没有考虑对数比例的情况下执行堆叠。有没有人找到解决这个问题的方法?我的数据如下所示:

head(contig_len)
       Length    Prevalence
   1    606      Repetitive (<5)
   2    888      Non-Repetitive
   3    192      Repetitive (<9)
   4   9830      Non-Repetitive
   5    506      Non-Repetitive
   6    850      Non-Repetitive

标签: rggplot2histogram

解决方案


推荐阅读