我使用R中的plot()
函数创建了散点图。
是否有可能在此图表上绘制?
我想添加一条直线并获取它的参数,但在我看来abline()
可能不方便(我想绘制很多行并选择一个最合适的行。)
我该如何完成这项任务?
答案 0 :(得分:7)
看看RStudio和这个例子:
library(manipulate)
data = matrix(rnorm(20), ncol = 2)
example <- function(data, a, b){
plot(data[,1],data[,2])
abline(a = a, b = b)
}
manipulate(
example(data, a, b),
a = slider(-5,5),
b = slider(-5,5)
)
这将在图上添加一条新线,并允许您调整其斜率和截距。
这受到此页面上的示例的启发:http://support.rstudio.org/help/discussions/questions/106-rstudio-manipulate-command
请注意,这需要安装RStudio(我相信它附带manipulate
包)。有关详细信息,请see the site。
其他locator
的解决方案可以在基础R中完成。
答案 1 :(得分:6)
使用locator()
,这个函数允许您在单击绘图时获取鼠标指针的坐标。然后使用
plot(cars)
xy <- locator(n=2)
lines(xy, col="red", lwd=5)
lm(y~x, xy)
abline(coef(lm(y~x, xy)))
coef(lm(y~x, xy))
(Intercept) x
33.142094 1.529687
当然,通过数据拟合线的正确方法是使用合适的模型。以下是lm
:
abline(coef(lm(dist~speed, cars)), col="blue")
我使用以下代码制作了以下图表:
abline
lm
警告1: locator
仅适用于某些图形设备。有关详细信息,请参阅?locator
。
警告2:手工绘制线条很可能是一个非常愚蠢的想法。使用像lm
这样的回归函数或像loess
这样的平滑函数。
答案 2 :(得分:3)
如果您希望以交互方式向地块添加水平或垂直线条,您可能需要使用locator()
功能捕捉图表上鼠标点击的位置。
例如,以下代码允许重复添加垂直线到现有图:
repeat {
click.loc <- locator(1)
if(!is.null(click.loc)) abline(v=click.loc$x)
else break
}
您可以使用abline(h=click.loc$y)