使用geom_abline()和ggplot

时间:2016-08-29 01:01:41

标签: r ggplot2

我是ggplot2的初学者 - 自从我开始尝试它以来仅仅4天。所以,如果这个问题听起来太基本,我道歉。我很感激任何指导 - 我一直在努力解决这个问题大约一个小时。

我正在尝试使用geom_abline(),如下所示:

 p <- ggplot(mpg, aes(cty, hwy)) + geom_point()
 p + geom_abline() + facet_wrap(~cyl)

这就像我可以看到所有四个刻面图中的参考线一样,如下所示:

node-gyp

稍后,我正在使用其他相关数据集mtcars来查看geom_abline()

会发生什么
  p <- ggplot(mtcars, aes(wt, mpg)) + geom_point()
     p + geom_abline() + facet_wrap(~cyl)

但是,当我运行此命令时,我看不到geom_abline().非常令人惊讶的是,我在帮助文件中找到了类似版本的上述命令,并且说“ geom_abline()已经出来了范围

虽然我知道“超出范围”意味着什么,但我怎么知道在特定数据集中abline()是否会超出范围?我可以通过强制它使用特定的斜率和截距来覆盖它,但后来我认为这有点黑客 - 即。看到输出后修改代码。有什么方法我可以知道geom_abline()

的幕后发生了什么

这是我没有任何abline()的图表 enter image description here

我很感激任何想法。我真的很困惑。

3 个答案:

答案 0 :(得分:9)

如果您不提供任何参数,geom_abline()使用默认值intercept = 0slope = 1

ggplot(mpg, aes(cty, hwy)) + geom_point() + geom_abline() + lims(x = c(0,35), y = c(0,50))
ggplot(mtcars, aes(wt, mpg)) + geom_point() + geom_abline() + lims(x = c(0,6), y = c(0,35))

enter image description here enter image description here

答案 1 :(得分:4)

第一个图和第二个图之间的差异,就abline的存在而言,并不是由数据集的差异决定的。你问:

  

我如何知道在特定数据集中是否会出现abline()   范围?

它实际上取决于你的美学中抛出的两个变量的尺度(即你的两个映射变量)。如果您在绘制mpg数据的脚本中仔细注意,则需要将hwycity进行比较。让我们仔细研究一下这些:

range(mpg$hwy)
[1] 12 44
range(mpg$cty)
[1]  9 35

如您所见,变量的范围相当重叠。现在让我们使用mtcars数据 - mpgwt查看第二个图中映射的两个变量:

range(mtcars$mpg)
[1] 10.4 33.9
range(mtcars$wt)
[1] 1.513 5.424

在这里,您可以看到重叠,这就是为什么当您按下图所示时看不到它的原因:

enter image description here

现在,让我们使用范围内但是从mtcars数据集中提取的数据测试范围的概念,以便显示其不是数据集,而是显示选择映射的变量的重叠范围。在mtcars中,让我们坚持使用mpg,然后选择其范围内的另一个变量-how bout qsec?让我们检查他们的范围:

range(mtcars$mpg)
[1] 10.4 33.9
range(mtcars$qsec)
[1] 14.5 22.9

好的,那里肯定有一些重叠。让我们映射它,看看会发生什么:

p <- ggplot(mtcars, aes(qsec, mpg)) + geom_point() + geom_abline() + facet_wrap(~cyl)

enter image description here

一些额外的确认,它不依赖于数据集。让我们改变工作流程,而不是在mpg数据集中识别非重叠对。在这里,我们应该期待看到没有下降。让我们坚持使用hwy并将其与displ进行比较。请相信我们,它们不重叠:

ggplot(mpg, aes(displ, hwy)) + geom_point()+geom_abline() + facet_wrap(~cyl)

enter image description here

正如其他人所指出的那样(@ cuttlefish44),geom_abline()默认的截距为0,斜率为1)。

尝试使用geom_smooth()来表示适合行。

 p <- ggplot(mpg, aes(cty, hwy)) + geom_point()
 p + geom_smooth(method = "lm", se = FALSE) + facet_wrap(~cyl)

enter image description here

答案 2 :(得分:3)

查看geom_abline()的帮助。有一个示例使用相同的数据集 - 没有方面 - 显示:

p + geom_abline() # Can't see it - outside the range of the data

尝试:

p <- ggplot(mtcars, aes(wt, mpg)) + geom_point()
p + geom_abline(intercept = 20) + facet_wrap(~cyl)
相关问题