如何使用ggplot2从两个数据帧创建单个图

问题描述 投票:0回答:2

我有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.

我怎样才能克服这个问题?

r ggplot2 visualization
2个回答
0
投票

由于我们没有任何数据,因此很难提供满足您的方案的特定解决方案。但下面是我认为你想做的一般原则。

诀窍是将您的数据放在一起,并有另一列标识组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

0
投票

我不能确切地告诉你,不知道实际上是什么样的数据集。但是将数据集合并为一个然后通过指定ggplot()或'color'来使用group将是一种比较方式。

另一种方法是使用来自grid.arrange()包的gridExtra

gridExtra::grid.arrange(g1, g2)

这是非常简单和非常方便的功能。如果您想了解有关gridExtra包的更多信息,请访问this official document

© www.soinside.com 2019 - 2024. All rights reserved.