matlab 3个变量的Gscatter

ne5o7dgx  于 2023-08-06  发布在  Matlab
关注(0)|答案(2)|浏览(202)

我正在研究判别分析,并希望使用MATLAB对一些数据进行分类。在MATLAB中给出的Fisher虹膜数据的示例中(访问www.mathworks.com/products/demos/statistics/classdemo.html了解详细信息),他们只考虑前2个变量(萼片长度和宽度)。我想继续与更多的功能,如花瓣长度和花瓣宽度分类。
此外,MATLAB函数gscatter似乎只需要2个变量。
第一个月
我也想包括meas(:,3)并继续。请帮帮我。谢谢您的支持

vngu2lb8

vngu2lb81#

您不能使用gscatter执行此操作,因为它只绘制2D数据。如果要对3D数据执行此操作(因为要包含另一个维),请考虑使用plot3以3D方式打印数据。但是,gscatter允许您指定每个组的颜色以及每个点的标记。我们仍然可以用plot3做同样的事情,但需要做更多的工作。生成一个新的空白figure,使用hold on,然后使用循环使用不同的颜色和标记一次绘制属于特定类别的所有数据。
我们首先应该做的是获取species中的分类数据,并为每个类别分配一个唯一的ID,以便我们可以分离出正确的数据进行绘图。因此,尝试这样做:

load fisheriris; %// The data that you are referring to
[~,~,id] = unique(species);
colors = 'rgb';
markers = 'osd';

for idx = 1 : 3
    data = meas(id == idx,:);
    plot3(data(:,1), data(:,2), data(:,3), [colors(idx) markers(idx)]);
    hold on;
end
grid; %// Show a grid

字符串
让我们慢慢地通过代码。load fisheriris加载Fisher Iris数据,如您所述。下一行使用unique遍历species数组,并为每个字符串分配一个唯一的ID。我们需要这个数组来为每个类别分离出存储在meas中的数据,这样我们就可以用不同的颜色和标记在图表上绘制这些数据。我声明了两个字符串数组,它们将存储每个标记的颜色以及标记。现在,我们创建一个循环,将每个唯一标签的数据分离出来,使用plot3绘制此数据,然后使用相应的颜色和标记标记每个点。您需要使用hold on,以便我们可以在同一个图形中绘制多个点集。如果不这样做,每次调用plot3时都会清除图形,只绘制最近添加的点。作为奖励,我们添加了一个grid,这样我们就可以更好地查看图形。
这就是我们得到的:


的数据

dbf7pr2w

dbf7pr2w2#

scatter3命令是获得所需内容的最简单方法:

scatter3(meas(:,1),meas(:,2),meas(:,3),size,categorical(species))

字符串
size是用特定大小绘制每个圆。

相关问题