Skip certain values in plot and connect adjacent points

16 views (last 30 days)
Hello,
I am trying to plot some data with a regular "plot" function, but I want to skip some certain values and connect the adjacent points of that skipped value. For example, I want to plot something like this:
x = 0:pi/10:2*pi;
y = sin(x);
plot(y)
and skip for examples values of x at points pi/2 or 3*pi/2, but connect the points around this skipped values. I tried:
x = 0:pi/10:2*pi;
y = sin(x);
plot(y(x~=pi/2))
but, it is not doing what I exactly want to do. I want the spacing of x values remain the same, except the skipped point, where the connected adjacent points obviously will have more separation than other pair of points. How can I do this kind of plot? Many thanks in advance.

Accepted Answer

Adam Danz
Adam Danz on 27 Aug 2019
How to skip x values.
x = 0:pi/10:2*pi;
skipPoints = [pi/2, 3*pi/2]; % list points to skip
x(ismember(x,skipPoints)) = []; % remove skip-points
% now compute Y with only the desired points
y = sin(x);
plot(x,y)
If you'd rather not connect the points adjacent to the skipped values, you can replace the skipped values with NaN
x = 0:pi/10:2*pi;
skipPoints = [pi/2, 3*pi/2]; % list points to skip
x(ismember(x,skipPoints)) = NaN; % Replace with nan
% now compute Y with only the desired points
y = sin(x);
plot(x,y)
  2 Comments
Daniyar Saparov
Daniyar Saparov on 27 Aug 2019
Hello Adam,
Many Thanks! The first one worked perfectly for me. Actually, I came up with another solution, assigning an average value of adjacent points to the skipped value, such as:
y(x==pi/2) = (y(x==pi/2-pi/10)+y(x==pi/2+pi/10))/2;
But your method is way better and saves a lot of space and time. Many thanks!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!