1

我有一个使用 ggplot2 的折线图,其中包含三行(在我的数据框中使用变量名称,例如“A”、“B”和“C”)。我想使用添加 geom_smooth method=loess,但我想添加基于“B”和“C”最小值的回归线。有没有办法做到这一点?

为了说明,这是一个模拟代码:

names  <- c('n1', 'n2', 'n3', 'n4', 'n5')
aline  <- c(0.18, 0.21, 0.23, 0.20, 0.16)
bline  <- c(0.50, 0.40, 0.30, 0.20, 0.10)
cline  <- c(0.14, 0.20, 0.30, 0.35, 0.33)
min_bc <- c(0.14, 0.20, 0.30, 0.20, 0.10)
df <- data.frame(name, aline, bline, cline)
df.m <- melt(df)
g <- ggplot(df.m, aes(group=1, names, value, colour=variable))
g <- g + geom_line(aes(group=variable))
g <- g + geom_point(aes(colour=variable), alpha=0.4)

aline我想使用and添加回归线min_bc,而不实际绘图min_bc

另外,我想把它扔进去:一般来说,我可能有一些数据,我想使用不同的数据转换来绘制(在同一张图中)不同的线(或点、条等)。是否有任何全面的文档可以让我大致了解如何在 R/ggplot 中执行此类操作?

4

1 回答 1

5

通常,将与主调用中的绘图相关的数据集设置为ggplot

ggplot(data, aes()) + geom_point()

但是,您也可以单独设置数据集geom

ggplot(data1, aes()) + geom_point(data = data2)

使用这种技术,您可以预先计算要绘制 LOESS 的数据集,并将其提供给geom_smooth(). 下面的例子证实了这个假设:

df1 = data.frame(x = 1:100, y = runif(100))
df2 = data.frame(x = 1:100, y = runif(100) + 1)
ggplot(df1, aes(x, y)) + geom_point() + geom_smooth(data = df2)

在此处输入图像描述

在此示例中,两个数据集具有相同的列名。如果不是这种情况,您还需要aes调整geom_smooth.

请记住,绘制另一个数据集的平滑而不是您在其下方绘制的数据集可能会使事情变得非常不清楚。

于 2013-10-15T19:28:25.143 回答