On 25.05.2012 22:52, servet cizmeli wrote:
Dear all,

I have a dataset of spectral measurements of sunlight. One row for each
different observation, one column for each spectral channel.

I would like to select the spectral curves drawn with matplot() (I only
know matplot() as a way of easily drawing them) with the help of the
mouse and extract their row indexes :

a=url("http://ekumen.homelinux.net/spectra.RData";)
load(a)
matplot(lbd2, t(mySpectra), type="l",xlab="Wavelength
[nm]",ylab="Radiance")

I was hoping that identify() would work on such a graphic but
unfortunately it does not. I tried to the "identify" function of the
package playwith(), but still the same problem.

I think I will have to write a function that does the job. But before
that, I would like to have your opinions. What would be the easiest way
of accomplishing this task?


Write a little function that makes use of locator():

Take its x position and calculate (by interpolation) the y location of all paths at this x position, then take the minimal distance.
The idea in quick an dirty:


mat_identify <- function(x, y, ...){
    l <- locator(1)
    if(all(x <= l$x) || all(x >= l$x))
        stop("not within data range")
    index <- max(which(x <= l$x))
    f <- (l$x - x[index]) / diff(x[index+(0:1)])
    yi <- f * (y[index+1,] - y[index,] ) + y[index,]
    result <- which.min(abs(yi-l$y))
    lines(x, y[,result], lwd=2, col="red")
    text(l, label=rownames(y)[result])
    result
}

matplot(lbd2, t(mySpectra), type="l",xlab="Wavelength [nm]",ylab="Radiance")
mat_identify(lbd2, t(mySpectra))

Best,
Uwe Ligges




Thank you very much
Best regards
servet

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to