2016-05-19 126 views
0

假设我有一个情况如下:MATLAB:从每个点都有自己的颜色散点图

clc; clear; 
n = 1001; 
m = 1000; 
X  = linspace(0,1,n); 
Y  = linspace(0,1,n); 
randcolor = rand(m,3); 
colorcode = randi(m,m,m); 

对于i = 1, ..., nj = 1, ...,n,我想积点(X(i),Y(j))的其中RBG颜色(X(i),Y(j))randcolor(colorcode(i,j),:)。我试图做这愚蠢的方式:首先声明

figure; hold on; 

然后做2个嵌套循环,n步每个,并使用plot绘制一个点为n×n次:

for i = 1:n 
    for j = 1:n 
     plot(X(i),Y(j),'Marker','o',... 
      'MarkerEdgeColor',randcolor(colorcode(i,j),:),... 
      'MarkerFaceColor',randcolor(colorcode(i,j),:)); 
    end 
end 

这种技术上的工作,但速度很慢,当n增加时,MATLAB耗尽了我所有的记忆。请问有什么更好的方法可以做到这一点?

p.s.在我的实际问题中,colorcode实际上没有随机分配。相反,它是基于一个充满Julia集合的分歧标准分配的。

回答

1

您想使用scatter而不是plot它允许您分别指定每个点的大小和颜色。

colors = rand(numel(X), 3); 
S = scatter(X, Y, 100, colors); 
+0

谢谢。为了我的目的,我需要用meshgrid修改你的答案,但是分散的建议是正确的。 – yurnero