I just found out that my "does this by default" statement (by which I was referring to the ability to automatically connect two points with a NA in the middle in a time series) is wrong! Actually, all plotting functions, i.e. plot, matplot and xyplot, don't plot NAs. The solution I came up with is convert the data to "long" table, remove NAs, and then use xyplot. See example below:
set.seed(1234) a=b=matrix(rnorm(9), 3,3) b[2,2]=NA matplot(a, type="b") matplot(b, type="b") ## I want the two "2" connected! matplot(b, type="l") ## Now my data for the second column are missing from the graph ## my solution tmp1 <- data.frame(g=rep(1:3,each=3), x=rep(1:3,3), y=c(b)) xyplot(y~x, group=g, data=tmp1, type="b", pch=c("1","2","3")) ## there is still no line connecting two "2"s. tmp2 <- tmp1[!is.na(tmp1$y),] xyplot(y~x, group=g, data=tmp2, type="b") ## this is what I want, b/c it's easier for me to keep track of both trend and missing values. The original post was really asking whether a simple change of some parameters in matplot can do this. Now, I guess not. ...Tao ---------------------------------------- > From: maech...@stat.math.ethz.ch > Date: Thu, 6 May 2010 18:34:22 +0200 > To: shi...@hotmail.com > CC: ggrothendi...@gmail.com; r-help@r-project.org > Subject: Re: [R] 'matplot' for matrix with NAs: broken lines > >>>>>> "TS" == Tao Shi >>>>>> on Wed, 5 May 2010 20:11:26 +0000 writes: > > TS> Thanks, Gabor! So, there is no way I can change some graphic parameters > in 'matplot' to get this? > > > TS> I forgot to mention that I purposely use type="b", so I know where the > missing data are. With imputed data, either using "b" or "l", there is no > way to keep track of NAs. Plus, in my real data sometimes there is only one > non-missing value in a particular column and na.approx can't work (well I > could selectively impute the NAs ... ) > > TS> So far, my best solution to this is to use "xyplot". It does this by > default, but of course I need some data manipulation first. > > "does this by default" meaning what? > I don't think it does impute missing, does it? > > Can you elaborate, using your example (below)? > > I found Gabor's answer appropriate, > I really cannot see why matplot() should behave differently here... > > ---- > > Martin Maechler > > > > > TS> ---------------------------------------- >>> From: ggrothendi...@gmail.com >>> Date: Wed, 5 May 2010 15:45:44 -0400 >>> Subject: Re: [R] 'matplot' for matrix with NAs: broken lines >>> To: shi...@hotmail.com >>> CC: r-help@r-project.org >>> >>> Try this: >>> >>> library(zoo) >>> matplot(na.approx(b), type = "l") >>> >>> On Wed, May 5, 2010 at 2:30 PM, Tao Shi wrote: >>>> >>>> Hi list, >>>> >>>> I know that points involving NAs are not plotted in 'matplot', but when I >>>> plot them as lines, I still want the lines to connect all the points (i.e. >>>> not broken where there are NAs). Please see the example below. How can I >>>> achieve this in 'matplot'? If I can't, any good alternatives so I don't >>>> have to use 'plot' + 'lines' and loop through all the columns. >>>> >>>> Many thanks! >>>> >>>> ...Tao >>>> >>>>> set.seed(1234) >>>>> a=b=matrix(rnorm(9), 3,3) >>>>> b[2,2]=NA >>>>> matplot(a, type="b") > TS> [[elided Hotmail spam]] >>>>> matplot(b, type="l") ## Now my data for the second column are missing >>>>> from the graph >>>> >>>> >>>> _________________________________________________________________ >>>> Hotmail is redefining busy with tools for the New Busy. Get more from your >>>> inbox. >>>> >>>> N:WL:en-US:WM_HMP:042010_2 >>>> ______________________________________________ >>>> 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. >>>> > > TS> _________________________________________________________________ > TS> Hotmail has tools for the New Busy. Search, chat and e-mail from your > inbox. > > TS> N:WL:en-US:WM_HMP:042010_1 > TS> ______________________________________________ > TS> R-help@r-project.org mailing list > TS> https://stat.ethz.ch/mailman/listinfo/r-help > TS> PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > TS> and provide commented, minimal, self-contained, reproducible code. _________________________________________________________________ Hotmail has tools for the New Busy. Search, chat and e-mail from your inbox. N:WL:en-US:WM_HMP:042010_1 ______________________________________________ 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.