我在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')
如果你能帮助我,我将不胜感激。
答案 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