我有2个数据集,称为A和B.我想比较一个公共变量的分布,称为k,在两个数据集中显示,但长度不同(A包含2000个k值,而B包含1000个,都有一些N / A)。所以我想在同一个情节中绘制A $ k anf B $ k的分布。
我试过了:
g1 <- ggplot(A, aes(x=A$k)) + geom_density()
g2 <- ggplot(B, aes(x=B$k)) + geom_density()
g <- g1 + g2
但随后出现了错误:
Don't know how to add o to a plot.
我怎样才能克服这个问题?
由于我们没有任何数据,因此很难提供满足您的方案的特定解决方案。但下面是我认为你想做的一般原则。
诀窍是将您的数据放在一起,并有另一列标识组A和组B.然后在aes()
的ggplot
参数中使用。请记住,组合数据框可能不像我所做的那么简单,因为你可能有一些额外的列等。
# generating some pseudo data from a poisson distribution
A <- data.frame(k = rpois(2000, 4))
B <- data.frame(k = rpois(1000, 7))
# Create identifier
A$id <- "A"
B$id <- "B"
A_B <- rbind(A, B)
g <- ggplot(data = A_B, aes(x = k,
group = id, colour = id, fill = id)) + # fill/colour aes is not required
geom_density(alpha = 0.6) # alpha for some special effects
g
我不能确切地告诉你,不知道实际上是什么样的数据集。但是将数据集合并为一个然后通过指定ggplot()
或'color'来使用group
将是一种比较方式。
另一种方法是使用来自grid.arrange()
包的gridExtra
。
gridExtra::grid.arrange(g1, g2)
这是非常简单和非常方便的功能。如果您想了解有关gridExtra包的更多信息,请访问this official document。