MATLAB:每个点都有自己颜色的散点图
MATLAB: scatter plot from where each point has its own color
假设我的情况如下:
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, ..., n
和 j = 1, ...,n
,我想绘制点 (X(i),Y(j))
,其中 (X(i),Y(j))
的 RBG 颜色是 randcolor(colorcode(i,j),:)
。我试图以愚蠢的方式做到这一点:首先 declare
figure; hold on;
然后做 2 个嵌套循环,每个循环 n 步,并使用 plot
绘制单个点 n x 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 集的一些发散标准分配的。
您想使用 scatter
而不是 plot
,这样您就可以单独指定每个点的大小和颜色。
colors = rand(numel(X), 3);
S = scatter(X, Y, 100, colors);
假设我的情况如下:
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, ..., n
和 j = 1, ...,n
,我想绘制点 (X(i),Y(j))
,其中 (X(i),Y(j))
的 RBG 颜色是 randcolor(colorcode(i,j),:)
。我试图以愚蠢的方式做到这一点:首先 declare
figure; hold on;
然后做 2 个嵌套循环,每个循环 n 步,并使用 plot
绘制单个点 n x 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 集的一些发散标准分配的。
您想使用 scatter
而不是 plot
,这样您就可以单独指定每个点的大小和颜色。
colors = rand(numel(X), 3);
S = scatter(X, Y, 100, colors);