Fast way to plot points with different colors

Hi, i have a matrix in the form
colorData=
[x1,y1,r1,g1,b1;
x2,y2,r2,g2,g2;
x3,y3,r3,g3,g3;
.............
xi,yi,ri,gi,gi];
where r,g,b are the colors for each data point.
currently I have been plotting using:
hold on
for a=1:length(colorData(:,1)) %for every row
color = [colorData(a,3),colorData(a,4),colorData(a,5)];
plot(colorData(a,1),colorData(a,2),'o','markerfacecolor',color,'markeredgecolor',color);
end
hold off
which works but takes about 3 seconds to execute for the large matrices im using. I can plot the x,y data in about 100ms so the problem is not really how much data im using.
Surely there must be a quicker, more efficient way to do this?

 Respuesta aceptada

Image Analyst
Image Analyst el 29 de Sept. de 2013

1 voto

Try using scatter() instead of that loop. With scatter() you can pass in colorData so that each marker has the color you specify.

3 comentarios

Edward
Edward el 29 de Sept. de 2013
Great! this takes it down to 400ms! Still seems a little long but its bearable
Image Analyst
Image Analyst el 29 de Sept. de 2013
How many elements are there? If there are more than a couple hundred, it might look so cluttered that it's just overkill. You may be able to throw up a subsample set of points and it will look substantially the same as if you put up all of them.
Edward
Edward el 29 de Sept. de 2013
Theres quite a lot, ill see if i can reduce how many points there are. I dont want to loose important data though

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Graphics Performance en Centro de ayuda y File Exchange.

Productos

Etiquetas

Preguntada:

el 29 de Sept. de 2013

Comentada:

el 29 de Sept. de 2013

Community Treasure Hunt

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

Start Hunting!

Translated by