Hello, I have x and y data to plot (synthetic example): x <- seq(0,4*pi,by=0.1) y <- sin(x) I then want to plot (x,y) in those points where abs(y) is smaller than 0.5. As a first approximation plot(x[abs(y) < 0.5],y[abs(y) < 0.5]) is quite close - however I want to plot with lines, i.e. type="l", and then I get solid lines connecting the endpoint of one "active" region to the start of the next active region, I would prefer to get rid of those. Lineart: ------- _____ ____ / (1) \ / (3)\ / \ / \ / \ / \ \ / \ \_____/ (2) The problem is the horisontal lines shown as (1), (2) and (3) in the schematic figure above, I would like to get rid of those, i.e. retaining only four disconnected segments. I have started on a programming based solution, plotting one piece at a time, but it is *very* ugly! Is there a simple general solution to my problem? Regards Joakim Hove -- Joakim Hove hove AT ift uib no Tlf: +47 (55 5)8 27 90 Fax: +47 (55 5)8 94 40 http://www.ift.uib.no/~hove/
> is quite close - however I want to plot with lines, i.e. type="l", and > then I get solid lines connecting the endpoint of one "active" region > to the start of the next active region, I would prefer to get rid of > those.> Is there a simple general solution to my problem?Plot will draw disconnected lines if there are NA values in the vector of X or Y values, so if you do: > x <- seq(0,4*pi,by=0.1) > y <- sin(x) > x[abs(y)>=0.5]=NA > y[abs(y)>=0.5]=NA > plot(x,y,type='l') You may get what you want. Baz
On Tue, 25 Jan 2005 14:57:18 +0100 Joakim Hove wrote:> > Hello, > > I have x and y data to plot (synthetic example): > > x <- seq(0,4*pi,by=0.1) > y <- sin(x) > > I then want to plot (x,y) in those points where abs(y) is smaller than > 0.5. As a first approximation > > plot(x[abs(y) < 0.5],y[abs(y) < 0.5]) > > is quite close - however I want to plot with lines, i.e. type="l", and > then I get solid lines connecting the endpoint of one "active" region > to the start of the next active region, I would prefer to get rid of > those. > > Lineart: > ------- > > _____ ____ > / (1) \ / (3)\ > / \ / \ > / \ / \ > \ / \ > \_____/ > (2) > > > The problem is the horisontal lines shown as (1), (2) and (3) in the > schematic figure above, I would like to get rid of those, > i.e. retaining only four disconnected segments. I have started on a > programming based solution, plotting one piece at a time, but it is > *very* ugly! > > Is there a simple general solution to my problem?That depends what general means. For this particular problem, the following works: y2 <- y is.na(y2) <- abs(y) >= 0.5 plot(x, y2, type = "l") hth, Z> > > Regards > > Joakim Hove > > -- > Joakim Hove > hove AT ift uib no > Tlf: +47 (55 5)8 27 90 > Fax: +47 (55 5)8 94 40 > http://www.ift.uib.no/~hove/ > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html >
a simple approach is to use NAs, i.e., x <- seq(0,4*pi,by=0.1) y <- sin(x) ########## x. <- x; x.[!abs(y) < 0.5] <- NA y. <- y; y.[!abs(y) < 0.5] <- NA plot(x., y., type="l") I hope it helps. Best, Dimitris ---- Dimitris Rizopoulos Ph.D. Student Biostatistical Centre School of Public Health Catholic University of Leuven Address: Kapucijnenvoer 35, Leuven, Belgium Tel: +32/16/336899 Fax: +32/16/337015 Web: http://www.med.kuleuven.ac.be/biostat http://www.student.kuleuven.ac.be/~m0390867/dimitris.htm ----- Original Message ----- From: "Joakim Hove" <hove at ift.uib.no> To: <r-help at stat.math.ethz.ch> Sent: Tuesday, January 25, 2005 2:57 PM Subject: [R] Plotting only masked part of data> > Hello, > > I have x and y data to plot (synthetic example): > > x <- seq(0,4*pi,by=0.1) > y <- sin(x) > > I then want to plot (x,y) in those points where abs(y) is smaller > than > 0.5. As a first approximation > > plot(x[abs(y) < 0.5],y[abs(y) < 0.5]) > > is quite close - however I want to plot with lines, i.e. type="l", > and > then I get solid lines connecting the endpoint of one "active" > region > to the start of the next active region, I would prefer to get rid of > those. > > Lineart: > ------- > > _____ ____ > / (1) \ / (3)\ > / \ / \ > / \ / \ > \ / \ > \_____/ > (2) > > > The problem is the horisontal lines shown as (1), (2) and (3) in the > schematic figure above, I would like to get rid of those, > i.e. retaining only four disconnected segments. I have started on a > programming based solution, plotting one piece at a time, but it is > *very* ugly! > > Is there a simple general solution to my problem? > > > > Regards > > Joakim Hove > > -- > Joakim Hove > hove AT ift uib no > Tlf: +47 (55 5)8 27 90 > Fax: +47 (55 5)8 94 40 > http://www.ift.uib.no/~hove/ > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html >