Matrix data plot
3 views (last 30 days)
Show older comments
I have 4 vectors, x1,y1,x2,y2. where x1 and y1 represent starting points and x2 and y2 are end points of lines, which I want to plot. Each i-th pair [x1(i), y1(i) x2(i) y2(i)] represents new separated line.
I would like to execute the plotting with a single plot command. I plot my data with set(h1,'xdata',...,'ydata',...) command for speed optimization. Is it possible to execute the plotting with a single plot command ?
I appreciate your help!
0 Comments
Accepted Answer
the cyclist
on 20 Jan 2012
The best way is to use x and y as data sources. I don't have much experience with this, but here is a working example. I tried to initialize with (0,0) or empty sets for x and y, but that choked for reasons that I do not understand. Maybe this will get you started, though.
x1 = rand(8,1);
x2 = rand(8,1);
x = [x1 x2]';
y1 = rand(8,1);
y2 = rand(8,1);
y = [y1 y2]';
figure
h = plot(x,y,'XDataSource','x','YDataSource','y');
for np = 1:10,
x1 = rand(8,1);
x2 = rand(8,1);
x = [x1 x2]';
y1 = rand(8,1);
y2 = rand(8,1);
y = [y1 y2]';
refreshdata(h,'caller')
drawnow
pause(0.5)
end
More Answers (3)
the cyclist
on 20 Jan 2012
Does this do what you mean?
x1 = rand(8,1);
x2 = rand(8,1);
y1 = rand(8,1);
y2 = rand(8,1);
plot([x1 x2]',[y1 y2]')
0 Comments
Gustl
on 20 Jan 2012
1 Comment
Sean de Wolski
on 20 Jan 2012
h = plot([x1 x2]',[y1 y2]')
You will see that h is a vector with a handle to each line data point. You could manually set the xdata/ydata for each line, this would likely be fast.
I would use a for-loop to generate n lines, each with it's own xdata/ydata.
See Also
Categories
Find more on Spline Postprocessing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!