在matlab中通过循环绘制一图多图

在matlab中通过循环绘制一图多图,matlab,Matlab,我想画正态分布图,但通过循环在同一个图中绘制多个图。对于第一次迭代,它很精细,即在一个图中绘制3个图,但在其他3个图中,它只绘制一个。这是代码 load iris.dat; iris; number_of_features = 4; classes = iris(:,5); number_of_classes = length(unique(classes)); for class_number = 1:number_of_classes likelihood{class_number} =

我想画正态分布图,但通过循环在同一个图中绘制多个图。对于第一次迭代,它很精细,即在一个图中绘制3个图,但在其他3个图中,它只绘制一个。这是代码

load iris.dat;
iris;
number_of_features = 4;
classes = iris(:,5);
number_of_classes = length(unique(classes));

for class_number = 1:number_of_classes
likelihood{class_number} = struct;

for feature_number = 1:number_of_features 
    likelihood{class_number}.pd{feature_number} = fitdist(iris(find(iris(:, 5) == class_number),feature_number),'Normal');
end
end
hold all
for feature_number = 1:number_of_features
for class_number=1:number_of_classes
  ppd=iris(find(iris(:, 5) == class_number),feature_number); 
     y=normpdf(ppd,likelihood{class_number}.pd{feature_number}.mu,likelihood{class_number}.pd{feature_number}.sigma);
  figure(feature_number)
  stem(ppd,y)
end
end

如果有人能检查一下,请告诉我代码中有什么问题,我不确定,但下面的代码可能有用。我刚刚改变了你的指挥位置

load iris.dat;
iris;
number_of_features = 4;
classes = iris(:,5);
number_of_classes = length(unique(classes));

for class_number = 1:number_of_classes
likelihood{class_number} = struct;

for feature_number = 1:number_of_features 
    likelihood{class_number}.pd{feature_number} = fitdist(iris(find(iris(:, 5) == class_number),feature_number),'Normal');
end
end

for feature_number = 1:number_of_features
figure(feature_number)
hold on
for class_number=1:number_of_classes
  ppd=iris(find(iris(:, 5) == class_number),feature_number); 
     y=normpdf(ppd,likelihood{class_number}.pd{feature_number}.mu,likelihood{class_number}.pd{feature_number}.sigma);
  stem(ppd,y)
end
hold off
end

谢谢你的回复,但是所有的情节都是相同的颜色。我写了不同颜色的保留所有,但是如何知道哪种颜色被分配给哪一类???欢迎你。你可以写这个颜色=['y','m','c','r'];在循环之前,写入stemppd,y,colorfeature_编号,而不是stemppd,y。