plot()
我使用R 中的函数创建了散点图。
有没有可能在这张图上画?
我想添加一条直线并获取它的参数,但在我看来abline()
可能不方便(我想画多条线并选择一条最合适的线)。
我怎样才能完成这项任务?
看看 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
我相信它随包一起提供)。有关详细信息,请参阅网站。
其他人的解决方案locator
可以在基础 R 中完成。
使用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
。
如果您希望以交互方式向绘图添加水平线或垂直线,您可能希望使用该locator()
功能来捕获鼠标在绘图上单击的位置。
例如,以下代码将允许在现有绘图中重复添加垂直线:
repeat {
click.loc <- locator(1)
if(!is.null(click.loc)) abline(v=click.loc$x)
else break
}
您可以将其调整为水平线abline(h=click.loc$y)