Matlab实现星座图:将数据聚类或者分类后,产生矩阵A,A的最后一列是元组所属类别,用数字表示,1、2、3等,所画星座图将不同类别的数据用不同标志画出来
function starPlot(A)
[hA,lA]=size(A)
MIN=min(A(:,1:lA-1))%每一列的最小值,即每个属性的最小值
MAX=max(A(:,1:lA-1))%每一列的最大值,即每个属性的最大值
R=MAX-MIN %极差
w=1/(lA-1)
for i=1:hA
B(i,:)=((A(i,1:lA-1)-MIN)./R).*pi;%极差正规化
C(i,1)=sum(cos(B(i,:)).*w,2);
C(i,2)=sum(sin(B(i,:)).*w,2);
C(i,3)=A(i,lA);
end
B
C
theta=0:0.01:pi;
x=cos(theta);
y=sin(theta);
plot(x,y);
for i=1:hA
hold on
switch C(i,3)
case 1
plot(C(i,1),C(i,2),'.r');
case 2
plot(C(i,1),C(i,2),'.b');
case 3
plot(C(i,1),C(i,2),'*r');
case 4
plot(C(i,1),C(i,2),'*b');
otherwise
plot(C(i,1),C(i,2),'.g');
end
end
hold off;