I created scattergram using the plot()
function in R.
Is there any possibility to draw on this graph?
I would like to add a straight line and get parameters of it, but in my opinion abline()
can be inconvenient (I would like to draw many lines and choose one which will be most proper).
How can I accomplish this task?
Take a look at RStudio and this example:
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)
)
This will put a new line on the plot, and allow you to tweak its slope and intercept.
This was inspired by the example on this page: http://support.rstudio.org/help/discussions/questions/106-rstudio-manipulate-command
Note that this requires installing RStudio (it ships with the manipulate
package, I believe). For more info, see the site.
Others' solutions with locator
can be done in base R.
Use locator()
, a function that allows you to get the coordinates of the mouse pointer when clicking on a plot. Then use
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
Of course the correct way of fitting lines through data is to use a proper model. Here is how you can do it with lm
:
abline(coef(lm(dist~speed, cars)), col="blue")
I made the following graph with this code:
abline
through these pointslm
Warning 1: locator
only works on some graphics devices. See ?locator
for more details.
Warning 2: Drawing lines of fit by hand could well be a really stupid idea. Use a regression function like lm
or a smoothing function like loess
instead.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With