How to plot a graph with y-axis values that can be incremental?

I was trying to figure out on how to plot the graph where y-axis values would be increase.
Starting code:
T_start1 = {182 444 392 201 155}; %start time (x-axis)
T_end = {728 938 674 638 702}; %end time (x-axis)
figure;
xdata = [cell2mat(T_start1); cell2mat(T_end)];
nT = size(xdata,2);
ydata = [1:nT; 1:nT; NaN(1,nT)];
xdata(end+1,:) = NaN;
plot(xdata(:),ydata(:),'.-r','LineWidth',2,'MarkerSize',8);
My intention is to get this kind of graph (blue line). Is this possible?
Current code:
T_start1 = {182 444 392 201 155}; %start time (x-axis)
T_end = {728 938 674 638 702}; %end time (x-axis)
P_array = {15 15 6 6 15}; %y-axis
figure;
xdata = [cell2mat(T_start1); cell2mat(T_end)];
nT = size(xdata,2);
ydata = [cell2mat(P_array); cell2mat(P_array); NaN(1,nT)];
xdata(end+1,:) = NaN;
plot(xdata(:),ydata(:),'.-r','LineWidth',2,'MarkerSize',8);
However, the output that I obtained wasn't the expected graph I want it to look like. Any help appreciated. Thanks in advance!

 Accepted Answer

In order to get a plot that looks like the blue line, you would need y data that gradually increases, levels off, then decreases. But, your y data has only two values: 6 and 15. That is why you only get two levels.
If you plot larger markers, you can see a bit more clearly the actual data being plotted:
T_start1 = {182 444 392 201 155}; %start time (x-axis)
T_end = {728 938 674 638 702}; %end time (x-axis)
P_array = {15 15 6 6 15}; %y-axis
figure;
xdata = [cell2mat(T_start1); cell2mat(T_end)];
nT = size(xdata,2);
ydata = [cell2mat(P_array); cell2mat(P_array); NaN(1,nT)];
xdata(end+1,:) = NaN;
plot(xdata(:),ydata(:),'.-r','LineWidth',2,'MarkerSize',32);

3 Comments

Also, it is unclear why you are using cell arrays. This code does the same thing, using only numeric vectors.
T_start1 = [182 444 392 201 155]; %start time (x-axis)
T_end = [728 938 674 638 702]; %end time (x-axis)
P_array = [15 15 6 6 15]; %y-axis
figure;
xdata = [T_start1; T_end];
nT = size(xdata,2);
ydata = [P_array; P_array; NaN(1,nT)];
xdata(end+1,:) = NaN;
plot(xdata(:),ydata(:),'.-r','LineWidth',2,'MarkerSize',32);
Oh I see, I understand what you meant. Thanks for the explanation. ^
I was wondering if we can do this by just using value of 15 and 6.
P_array becomes [15,30,36,42,57]
But we are still using value of 15 and 6.
Is this possible?
Speaking of the cell array, yeah you are right. I should have just use numeric vectors since I'm only dealing with numbers.
I thought of a way of incrementing P_array.
P1 = [cumsum(P_array)];
P2 = [cumsum(P_array, 'reverse')];
P1(end+1) = P2;
The code seems to have error for P1(end+1) = P2 but I couldn't understand why it shows error.
Error comment: Unable to perform assignment because the left and right sides have a different number of elements.

Sign in to comment.

More Answers (0)

Products

Release

R2022a

Tags

Asked:

on 23 Apr 2022

Edited:

on 24 Apr 2022

Community Treasure Hunt

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

Start Hunting!