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: maechler at stat.math.ethz.ch
Date: Thu, 6 May 2010 18:34:22 +0200
To: shitao at hotmail.com
CC: ggrothendieck at gmail.com; r-help at r-project.org
Subject: Re: [R] 'matplot' for matrix with NAs: broken lines
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...
TS> ----------------------------------------
From: ggrothendieck at gmail.com
Date: Wed, 5 May 2010 15:45:44 -0400
Subject: Re: [R] 'matplot' for matrix with NAs: broken lines
To: shitao at hotmail.com
CC: r-help at r-project.org
matplot(na.approx(b), type = "l")
On Wed, May 5, 2010 at 2:30 PM, Tao Shi wrote:
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.
a=b=matrix(rnorm(9), 3,3)
TS> [[elided Hotmail spam]]
matplot(b, type="l") ## Now my data for the second column are missing from the graph