## How do we plot a graph with non available values for y without breaking the continuity?

on 25 Oct 2012

### Matt Tearle (view profile)

INTRO: I have an array M as below:

```M=
1	4
2	NaN
3	10
4	NaN
5	NaN
6	15
7	NaN
8	17
9	59
10	NaN
```

GOAL: I want to plot the second versus the first column as follow:

```M=load('M.txt');
h=plot(M(:,1),M(:,2));
```

PROBLEM: Due to the NaN, it does not plot the gaps correctly and breaks the continuity of the graph.

I wonder if someone could suggest me to some command lines that could fix this issue.

Emerson

## Products

### Matt Tearle (view profile)

on 25 Oct 2012

You can interpolate to fill the missing values, as Azzi suggests, or simply remove all the NaNs:

```idx = ~isnan(M(:,2));
x = M(idx,1);
y = M(idx,2);
plot(x,y,'o-')
```

If you don't plot markers on the data points, this will look exactly the same as Azzi's solution using interpolation. The difference is whether or not you care about showing which points are actual data values.

### Azzi Abdelmalek (view profile)

on 25 Oct 2012
Edited by Azzi Abdelmalek

### Azzi Abdelmalek (view profile)

on 25 Oct 2012

Use interpolation

```x=M(:,1);
y=M(:,2);
idx=find(~isnan(y))
y=interp1(x(idx),y(idx),x,'linear')
```

or remove rows containing nan

``` x=M(:,1);
y=M(:,2);
x(find(isnan(y)))=[]
y(find(isnan(y)))=[]```

Matt Tearle

### Matt Tearle (view profile)

on 25 Oct 2012

idx = ~isnan(y);

No need for the find. (Sorry, I love logical indexing!)

Azzi Abdelmalek

### Azzi Abdelmalek (view profile)

on 25 Oct 2012

I agree

#### Join the 15-year community celebration.

Play games and win prizes!

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi