我是ggplot2
的初学者 - 自从我开始尝试它以来仅仅4天。所以,如果这个问题听起来太基本,我道歉。我很感激任何指导 - 我一直在努力解决这个问题大约一个小时。
我正在尝试使用geom_abline()
,如下所示:
p <- ggplot(mpg, aes(cty, hwy)) + geom_point()
p + geom_abline() + facet_wrap(~cyl)
这就像我可以看到所有四个刻面图中的参考线一样,如下所示:
稍后,我正在使用其他相关数据集mtcars
来查看geom_abline()
p <- ggplot(mtcars, aes(wt, mpg)) + geom_point()
p + geom_abline() + facet_wrap(~cyl)
但是,当我运行此命令时,我看不到geom_abline().
非常令人惊讶的是,我在帮助文件中找到了类似版本的上述命令,并且说“ geom_abline()
已经出来了范围“
虽然我知道“超出范围”意味着什么,但我怎么知道在特定数据集中abline()
是否会超出范围?我可以通过强制它使用特定的斜率和截距来覆盖它,但后来我认为这有点黑客 - 即。看到输出后修改代码。有什么方法我可以知道geom_abline()
我很感激任何想法。我真的很困惑。
答案 0 :(得分:9)
如果您不提供任何参数,geom_abline()
使用默认值intercept = 0
和slope = 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))
答案 1 :(得分:4)
第一个图和第二个图之间的差异,就abline的存在而言,并不是由数据集的差异决定的。你问:
我如何知道在特定数据集中是否会出现abline() 范围?
它实际上取决于你的美学中抛出的两个变量的尺度(即你的两个映射变量)。如果您在绘制mpg
数据的脚本中仔细注意,则需要将hwy
与city
进行比较。让我们仔细研究一下这些:
range(mpg$hwy)
[1] 12 44
range(mpg$cty)
[1] 9 35
如您所见,变量的范围相当重叠。现在让我们使用mtcars
数据 - mpg
和wt
查看第二个图中映射的两个变量:
range(mtcars$mpg)
[1] 10.4 33.9
range(mtcars$wt)
[1] 1.513 5.424
在这里,您可以看到零重叠,这就是为什么当您按下图所示时看不到它的原因:
现在,让我们使用范围内但是从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)
一些额外的确认,它不依赖于数据集。让我们改变工作流程,而不是在mpg
数据集中识别非重叠对。在这里,我们应该期待看到没有下降。让我们坚持使用hwy
并将其与displ
进行比较。请相信我们,它们不重叠:
ggplot(mpg, aes(displ, hwy)) + geom_point()+geom_abline() + facet_wrap(~cyl)
正如其他人所指出的那样(@ 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)
答案 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)