首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用geom_abline()和ggplot

使用geom_abline()和ggplot
EN

Stack Overflow用户
提问于 2016-08-29 01:01:40
回答 3查看 43.7K关注 0票数 12

我是ggplot2的初学者--从我开始使用它到现在才4天。所以,如果这个问题听起来太基本,我很抱歉。我很感激你的指导--我已经为这个问题挣扎了一个小时了。

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

代码语言:javascript
复制
 p <- ggplot(mpg, aes(cty, hwy)) + geom_point()
 p + geom_abline() + facet_wrap(~cyl)

这在所有四个面图中都可以看到一条参考线,如下所示:

后来,我使用了另一个相关的数据集mtcars来查看geom_abline()发生了什么。

代码语言:javascript
复制
  p <- ggplot(mtcars, aes(wt, mpg)) + geom_point()
     p + geom_abline() + facet_wrap(~cyl)

然而,当我运行这个命令时,我没有看到非常令人惊讶的geom_abline().,我在帮助文件中找到了类似版本的上述命令,它说"geom_abline()超出了范围“

虽然我知道“超出范围”是什么意思,但是我如何知道在特定的数据集中,abline()是否超出了范围?我可以通过强制它使用特定的斜率和拦截来覆盖它,但是我会认为这是一种黑客攻击。在看到输出后修改代码。有没有办法让我知道geom_abline()在幕后发生了什么?

这是我得到的没有任何abline()s的图

如果有任何想法我会很感激。我真的很困惑。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-29 01:35:10

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

代码语言:javascript
复制
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))

票数 14
EN

Stack Overflow用户

发布于 2016-08-29 01:36:10

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

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

它实际上取决于在美学中抛出的两个变量的比例(即两个映射变量)。如果您在脚本中仔细注意到绘制mpg数据,那么您将hwycity进行比较。让我们仔细研究其中的每一个:

代码语言:javascript
复制
range(mpg$hwy)
[1] 12 44
range(mpg$cty)
[1]  9 35

正如您所看到的,变量的范围有很大的重叠。现在让我们看一下第二幅图中使用mtcars数据映射的两个变量- -mpgwt

代码语言:javascript
复制
range(mtcars$mpg)
[1] 10.4 33.9
range(mtcars$wt)
[1] 1.513 5.424

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

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

代码语言:javascript
复制
range(mtcars$mpg)
[1] 10.4 33.9
range(mtcars$qsec)
[1] 14.5 22.9

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

代码语言:javascript
复制
p <- ggplot(mtcars, aes(qsec, mpg)) + geom_point() + geom_abline() + facet_wrap(~cyl)

一些额外的确认它不依赖于数据集。让我们反转我们的工作流程,然后在mpg数据集中识别不重叠的对。在这里,我们应该不会看到任何插队。让我们继续使用hwy,并将其与displ进行比较。请相信我的话,它们不重叠。

代码语言:javascript
复制
ggplot(mpg, aes(displ, hwy)) + geom_point()+geom_abline() + facet_wrap(~cyl)

正如其他人所指出的(@ others 44),geom_abline()默认设置为0,斜率为1)。

试着将geom_smooth()用于适合的线路。

代码语言:javascript
复制
 p <- ggplot(mpg, aes(cty, hwy)) + geom_point()
 p + geom_smooth(method = "lm", se = FALSE) + facet_wrap(~cyl)

票数 6
EN

Stack Overflow用户

发布于 2016-08-29 01:34:36

请看geom_abline()的帮助。有一个具有相同数据集的示例显示-没有面- that:

代码语言:javascript
复制
p + geom_abline() # Can't see it - outside the range of the data

尝试:

代码语言:javascript
复制
p <- ggplot(mtcars, aes(wt, mpg)) + geom_point()
p + geom_abline(intercept = 20) + facet_wrap(~cyl)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39197217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档