Fast way to plot points with different colors

68 views (last 30 days)
Edward
Edward on 29 Sep 2013
Commented: Edward on 29 Sep 2013
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?

Accepted Answer

Image Analyst
Image Analyst on 29 Sep 2013
Try using scatter() instead of that loop. With scatter() you can pass in colorData so that each marker has the color you specify.
  3 Comments
Edward
Edward on 29 Sep 2013
Theres quite a lot, ill see if i can reduce how many points there are. I dont want to loose important data though

Sign in to comment.

More Answers (0)

Tags

Products

Community Treasure Hunt

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

Start Hunting!

Translated by