在ggplot2中用对数刻度绘制堆积直方图

时间:2018-07-15 14:59:18

标签: r ggplot2 histogram

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

我有一些要为其创建直方图的数据。此数据对于bin [0,200)的计数为10000,而对于诸如[30000,30200)的几个bin的计数为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")

Good histogram

这很好用!但是现在,我要对直方图中的项目进行分类,如下所示:

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

Bad Histogram

这是行不通的,因为执行堆叠时未考虑对数刻度。有没有人找到解决这个问题的方法?我的数据如下:

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

0 个答案:

没有答案