I need to plot a Dynamic scattered plot. I have vector x and y, and those are coordinates. I need to plot coordinate 1, and then coordinate 2 but coordinate 1 must need to still there.

Illustration
Amolisharma - 2020-08-05T10:50:06+00:00
Question: I need to plot a Dynamic scattered plot. I have vector x and y, and those are coordinates. I need to plot coordinate 1, and then coordinate 2 but coordinate 1 must need to still there.

Hi everyone, i need to do a dynamic plot.I have 2 vectors, x & y. So i have a coordinate (x,y). For example, i have (0,0) , (1,1), (3,3) , (4,4) and so on, and first i need a point or a dot at (0,0) and then (1,1). then (2,2) but (0,0) and (1,1) must still there in the plot. So the plot will be like a lot of points but ploted dynamically. This is my code: clear all clc close all   table = readtable('laser_data.csv'); array = table2array(table); for i = 1:length(array) %LEFT hold on for k = 2:2:30 x = -0.018+array(i,k); y = 0.0899+array(i,k+1); xlabel('Distancia en el eje X') ylabel('Distancia en el eje Y') title('Obstáculos') h = scatter(x, y, 10, 'r'); drawnow limitrate %pause(0.00001) end drawnow %FRONT for k = 32:2:60 x = 0.05620-array(i,k+1); y = array(i,k); xlabel('Distancia en el eje X') ylabel('Distancia en el eje Y') title('Obstáculos') h = scatter(x, y, 10, 'r'); drawnow limitrate %pause(0.00001) end drawnow %RIGHT for k = 62:2:90 x = 0.018-array(i,k); y = -0.0899-array(i,k+1); xlabel('Distancia en el eje X') ylabel('Distancia en el eje Y') title('Obstáculos') h = scatter(x, y, 10, 'r'); drawnow limitrate % pause(0.00001) end drawnow end But it takes like 30 minutes to plot, and using this one: just takes 30 secs but i dont want lines, i want points.   table = readtable('laser_data.csv'); array = table2array(table); h = animatedline('Marker','none'); for i = 1:length(array) %LEFT for k = 2:2:30 x = -0.018+array(i,k); y = 0.0899+array(i,k+1); xlabel('Distancia en el eje X') ylabel('Distancia en el eje Y') title('Obstáculos') addpoints(h,x,y) drawnow limitrate %pause(0.00001) end %FRONT for k = 32:2:60 x = 0.05620-array(i,k+1); y = array(i,k); xlabel('Distancia en el eje X') ylabel('Distancia en el eje Y') title('Obstáculos') addpoints(h,x,y) drawnow limitrate %pause(0.00001) end %RIGHT for k = 62:2:90 x = 0.018-array(i,k); y = -0.0899-array(i,k+1); xlabel('Distancia en el eje X') ylabel('Distancia en el eje Y') title('Obstáculos') addpoints(h,x,y) drawnow limitrate % pause(0.00001) end end

Expert Answer

Profile picture of Prashant Kumar Prashant Kumar answered . 2025-11-20

h = animatedline('Marker','none');

There's your problem...

 

array=readmatrix('laser_data.csv');             % no point in a table to just convert to array...
hAL=animatedline('Marker','.','MarkerSize',3,'LineStyle','none');  % set a point marker, no line...
xlabel('Distancia en el eje X')                 % don't update static info every pass through loop
ylabel('Distancia en el eje Y')
title('Obstáculos')
for i=1:size(array,1)                           % length() is risky
  %LEFT
  for k = 2:2:30
    x = -0.018+array(i,k);
    y = 0.0899+array(i,k+1);
    addpoints(hAL,x,y)
    drawnow limitrate
    %pause(0.00001)
  end
  ...

Make same changes in rest. It would be better to factor code so don't have repeated identical loops with just constants changing between, but that's another exercise...


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!