我有这样的数据(来自DNA测序):
read.lengths = c(100, 100, 200, 250, 300, 400, 400, 500, 500)
每个长度只是读数中的一些DNA碱基。给定任意数量的箱,绘制读取长度与计数的直方图是很简单的。
ggplot(data.frame(read.lengths)) + geom_histogram(aes(x = read.lengths))
但我想做的是将基数总数放在y轴上,而不是读数的数量。即对于直方图中的每个bin,我想要Y轴上该bin中所有读取长度的总和。
答案 0 :(得分:2)
试试这个。
library(ggplot2)
library(dplyr)
read.lengths <- c(100, 100, 200, 250, 300, 400, 400, 500, 500)
read.lengths.cat <- as.factor(read.lengths)
read.lengths.data <- data.frame(read.lengths.cat, read.lengths)
read.lengths.data <- aggregate(read.lengths ~ read.lengths.cat,
data = read.lengths.data, sum)
ggplot(aes(x = read.lengths.cat, y = read.lengths),
data = read.lengths.data) +
geom_bar(stat = "identity")
答案 1 :(得分:0)
感谢this answer让我以正确的方式看到它,我尝试了一些ggplot魔法,它似乎完美无缺。
ggplot(data.frame(read.lengths)) + geom_histogram(aes(x = read.lengths, y = (..count..*x))