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.

Reply via email to