将geom_smooth()拟合到ggplot2

时间:2017-11-13 20:21:51

标签: r ggplot2 statistics

我有一些看起来像这样的数据:

sample  diff    chromosome  haploid coverage
B   90.9963099631   7   b   0.513
A   91.7019475021   12  a   8.234
C   90.3855783676   14  a   6.211
D   91.3407821229   17  b   4.321
E   91.5740740741   11  b   0.213
F   90.9963099631   7   b   0.513
G   91.7019475021   12  a   8.234
H   90.3855783676   14  a   6.211
I   91.3407821229   17  b   4.321
J   91.5740740741   11  b   0.213

我想想象一下'差异的变化。对于不同的覆盖值,跨越不同的染色体,所以我这样做了:

plot = ggplot(dat, aes(x = coverage, y = diff, group  = chromosome, colour = chromosome, ylim(0, 100)) ) + geom_point(colour = chromosome) + stat_smooth(se=FALSE) + ylim(0, 100)

`geom_smooth()` using method = 'loess'

现在我认为这不是绘制多条趋势线的最佳方法,但我制作了这个:

enter image description here

这就是我所追求的。但我认为实际上,根据我的数据,所有曲线都不应该是完全相同的形状,但所有曲线的形状基本相同。那么geom_smooth()是否为所有类别绘制了一条LOWESS曲线,然后为不同的类别上下移动了相同的曲线?

如果是这样,有没有办法让它为每个类别绘制独立的线条?

1 个答案:

答案 0 :(得分:0)

无法使用您提供的代码复制您的情节。 但是,使用mtcars数据集获取您正在寻找的内容的正确语法如下。

library(ggplot2)

df = mtcars

df$cyl = factor(df$cyl)

ggplot(df, aes(x = mpg, y = disp, colour = cyl, group = cyl)) + 
  geom_point() + 
  geom_smooth(se=F)

尝试在此代码上调整您的示例/数据集。