我试图找出散点函数在matlab中的工作原理。 例如,我有两个矩阵:
mat1= rand(20,20)
mat2= rand(20,20)
此时我需要打开一个图并使用“scatter”函数来显示mat1中的值与mat2中的值的散点图。 我做的是:
figure()
scatter(mat1,mat2)
明显是错的。但我不知道该怎么做。另外,我在matlab文档Scatter Function - MATLAB DOCS
中阅读了有关分散函数的文档欢迎提出建议!感谢。
答案 0 :(得分:3)
由于scatter
函数需要向量(具有一行或一列的矩阵),请尝试
figure()
scatter(mat1(:),mat2(:))
(:)
运算符将矩阵转换为向量。
答案 1 :(得分:0)
Scatter只是一种绘制数据的方法。 Scatter会将数据绘制为点而不连接它们。试试
mat1= rand(1,20)
mat2= rand(1,20)
subplot(121)
scatter(mat1,mat2);
subplot(122)
plot(mat1,mat2)
答案 2 :(得分:0)
此答案是对OP的评论的回应,该评论要求如何将不同的标记设置为不同的颜色。
方法1:逻辑索引
要求您定义每种颜色的索引。在下面的示例中,随机选择红色标记;其余标记将为蓝色。
% MATLAB R2017a
mat1 = 100*rand(20,1);
mat2 = 100*rand(20,1);
idxRed = rand(20,1)> 0.5;
idxBlue = ~idxRed;
s(1) = scatter(mat1(idxRed),mat2(idxRed),[],'r','filled');
hold on
s(2) = scatter(mat1(idxBlue),mat2(idxBlue),[],'b','filled');
% Cosmetics
daspect([1 1 1])
box on
for j = 1:2
s(j).MarkerEdgeColor = 'k';
s(j).MarkerFaceAlpha = 0.3; % Transparency control
end
方法2:自定义颜色图
创建一个自定义colormap,将其直接映射到所需的颜色。在下面的示例中,颜色图仅包含两种颜色。逻辑变量idxRed
仅具有两个可能的值,因此此处不需要调用caxis([0 1])
。
% Create custom colormap
col1 = [0 1 0]; % Green
col2 = [1 0 0]; % Red
cmap = [col1;col2];
% Plot
colormap(cmap), hold on, box on
scatter(mat1,mat2,[],idxRed,'filled');