# Fill command issue for time series

4 views (last 30 days)
William Garrett on 31 Mar 2020
Edited: Les Beckham on 5 Apr 2020
I am trying to fill the space in between two lines on a time series
I have created a 45x1 cell array of datenum variables (X), a 45x1 cell array for the blue line (Y1) and a 45x1 cell array for the red line (Y2)
The plot of these two lines can be seen in the attatched image 'Lines'
I want to fill in the space in between these lines
However, when I use the following script, the space in between the lines does not fill - as seen in the image 'Fill'. What am I doing incorrectly?
EDIT: I have attached some sample data, Y1 is the higher values
>> plot(X, Y1, 'b', X, Y2, 'r')
>> hold on
>> fill([X fliplr(X)],[Y1 fliplr(Y2)],'c')

Les Beckham on 5 Apr 2020
Edited: Les Beckham on 5 Apr 2020
Based on your sample data, you need to make a simple change to your code. Since your vectors are columns, you need to concatenate using a semicolon so you get vectors and not nx2 matrices.
Here is the result after making this change:
plot(x, y1, 'b', x, y2, 'r')
hold on
fill([x; flip(x)], [y1; flip(y2)], 'c', 'edgecolor', 'none')

Prabhanjan Mentla on 3 Apr 2020
In general fill function is used to fill the polygons with specified color( c ).
x = 1:5;
y1 = sin(x) + 2;
y2 = sin(x);
fill([x fliplr(x)], [y2 fliplr(y1)], 'c')
This code fills the area between y1 and y2.
Plot followed by hold on and fill, may also work in the same way as above code.
Here in your case I assume there is a problem with your input data.
William Garrett on 5 Apr 2020
Thank you for your help; however one thing confuses me.
On the attatched link the answer says to sort your data as if walking around the x.y co-ordinates. Are you able to expand on what this means?
I have attached to the question some sample data if this helps, Y1 is the higher values
Thank you

R2019b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!