abline不会将线放在正确的位置

时间:2016-04-11 13:43:19

标签: r

我是编程/ R的新手,我遇到了一个非常不寻常的问题。我制作了一个散点图,我想简单地将x y轴放在图上0。但是,当我使用abline时,它们稍微偏离了。我设法使用反复试验将它们设为0,但试图绘制其他线条变得不可能。

library('car')
scatterplot(cost~qaly, reg.line=FALSE, smooth=FALSE, spread=FALSE, 
        boxplots='xy', span=0.5, xlab="QALY", ylab="COST", main="Bootstrap", 
        cex=0.5, data=scat2, xlim=c(-.05,.05), grid=FALSE)
abline(v = 0, h = 0)

这会给出略微向左和低于0的线。

这是一个返回的图像: (因为我很新,我无法发布图像)

我发现这些值将行放在0:

abline(v=0.003)
abline(h=3000)

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

使用@ Laterow的示例,重现问题

require(car)
set.seed(10)
x <- rnorm(1000); y <- rnorm(1000)
scatterplot(y ~ x)
abline(v=0, h=0)

enter image description here

scatterplot似乎正在重置退出时的par设置。您可以使用locator(1)来检查这一点,例如{-3,-3}我得到

# $x
# [1] -2.469414
# 
# $y
# [1] -2.223922

选项1

@joran指出,reset.par = FALSE是最简单的方法

scatterplot(y ~ x, reset.par = FALSE)
abline(v=0, h=0)

enter image description here

选项2

?scatterplot中,它表示...已传递给plot,这意味着您可以使用plot非常有用的panel.firstpanel.last论据(等等)。

scatterplot(y ~ x, panel.first = {grid(); abline(v = 0)}, grid = FALSE)

enter image description here

请注意,如果你要做基本的

scatterplot(y ~ x, panel.first = abline(v = 0))

您将无法看到该行,因为默认scatterplot grid会覆盖该行,因此您可以将其关闭,首先绘制grid 然后执行abline

您也可以在abline中执行panel.last,但这可能会超出您的观点,因此可能并不理想。