如何在matlab中指定绘图中的不同点

时间:2015-09-23 12:53:11

标签: matlab matlab-figure outliers

我在matlab中生成了一个数据集,然后在数据中嵌入了一些异常值。我想绘制它,因为我是matlab的新手,我不知道如何用不同符号或不同颜色指定内部异常值。相对于x轴,y轴和它们两者的外围点。这是matlab的代码;

pd = makedist('Normal');
rng(38)
a = random(pd,100,1);
b  = datasample(1:100,40,'Replace',false);
pd1 = makedist('Normal','mu',10*sqrt(2),'sigma',0.1);

a(b)=random(pd1,40,1);
a=reshape(a,[50,2]);
plot(a(:,1),a(:,2),'O') 

如果你能帮助我,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

在这个例子中,我假设沿着OX轴的距离大于3的点是异常值并将它们标记为红色(而正常点标记为蓝色):

centroid = mean(a);
distx = a(:,1) - centroid(1);
disty = a(:,2) - centroid(2);

outliers_x = distx > 3;

plot(centroid(1), centroid(2), 'xk')
hold on 
plot(a(outliers_x,1),a(outliers_x,2),'or')
plot(a(~outliers_x,1),a(~outliers_x,2),'ob')
hold off

请注意,我还将质心显示为黑色" X"标记

hold on / hold off用于"堆叠"几个图(或图像)在一起 您可能需要阅读hold() reference。另外here您可以找到哪些标记和颜色可用。

答案 1 :(得分:0)

为了回答我的问题,我编写了以下代码,以便指定4组不同颜色的观察结果。

pd = makedist('Normal');
rng(38)
a = random(pd,100,1);
b  = datasample(1:100,40,'Replace',false);
pd1 = makedist('Normal','mu',10*sqrt(2),'sigma',0.1);

a(b)=random(pd1,40,1);
a=reshape(a,[50,2]); 

hold all;
aa=(a >= 10 | a >= 10);
rep=repmat(0, 1, 50);
aaa=[rep',aa];
n=50;
for i=1:n; plot(a(i,1),a(i,2),'o','col',aaa(i,:));
end