MATLAB Answers

how can I plot multiple y values for single x value?

214 views (last 30 days)
Francesca Accetta
Francesca Accetta on 21 Feb 2018
I have to plot multiple y values for single x value, but in the plot all the values related to x=x1 appears on the same column. The relative y values are related to the same day (x) but to subsequent times. I would like to plot y values related to the same x in different columns just labeling the first value of x. It is possible? Thank you The graph that i found is the following but i don't know how to solve the problem.

  3 Comments

Chaman Srivastava
Chaman Srivastava on 2 Dec 2020
I'm also looking for a similar solution! Commenting to increase the reach.
KALYAN ACHARJYA
KALYAN ACHARJYA on 2 Dec 2020
@Chaman can you more specific please? To plot the data, the lengths of x and y must be the same. If we consider the same x value for all the corresponding y data, the result will be a vertical line (parallel to the y-axis).
Chaman Srivastava
Chaman Srivastava on 2 Dec 2020
@kalyan acharjya Yes indeed it will be a straight line. But my goal is to obtain a regression curve with confidence interval, something like what is shown in the curve attached.
Any leads for this? Thanks

Sign in to comment.

Answers (1)

Bastian Arturo Romero Mardones
you can try creating a vector of ones and multiplying this by your x values, for example:
y = rand(1,15);
xvalue = 3;
x = xvalue*ones(1,length(y));
scatter(x,y,'LineWidth',3);

  3 Comments

Bastian Arturo Romero Mardones
Or
y = rand(1,15);
y2 = rand(1,10);
xvalue = 3;
x = xvalue*ones(1,length(y));
x2 = ones(1,length(y2));
scatter(x,y,'LineWidth',3); hold on;
scatter(x2,y2,'LineWidth',3)
xlim([0 4])
grid on;
Chaman Srivastava
Chaman Srivastava on 2 Dec 2020
Hey Bastian,
Thank you the piece of code. I have tried something like this but plotting a regression using polyfit isn't working. Any leads on that?
Bastian Arturo Romero Mardones
I tried it this way
clearvars;
x = linspace(0,30);
i = 0; j = 1;
comp = 1:3:length(x);
vectorx = zeros(1,length(x));
%Vector with three same x values
for n = 1:length(x)
vectorx(n) = i;
if(n == comp(j))
i = i+1;
j = j+1;
end
end
x = vectorx;
%Random data
y = 0.2+rand(1,length(vectorx));
p = polyfit(x,y,1);
f = polyval(p,x);
figure
plot(x,y,'o',x,f,'-','LineWidth',3)
legend('data','linear fit')
grid on;

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!