首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >3个变量的广义散射

3个变量的广义散射
EN

Stack Overflow用户
提问于 2015-01-02 06:46:00
回答 2查看 8.4K关注 0票数 2

我正在进行判别分析,并希望使用MATLAB对一些数据进行分类。在MATLAB中给出的费舍尔虹膜数据的例子中,他们只考虑前两个变量(间隔长度和宽度)。我想进行分类,更多的特点,如花瓣的长度和宽度。

此外,MATLAB函数的gscatter似乎只接受两个变量。

gscatter(meas(:,1), meas(:,2), species,'rgb','osd');

我也想列入多边投资协定(:,3)并继续进行。请帮帮我。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-02 07:38:35

gscatter不能这样做,因为它只绘制2D数据。如果您想对3D数据执行此操作(因为您包含了另一个维度),请考虑使用plot3在3D中绘制数据。然而,gscatter允许您指定每个组的颜色以及每个点的标记。我们仍然可以对plot3做同样的事情,但是它需要更多的工作。生成一个新的空白figure,使用hold on,然后使用一个循环来用不同的颜色和标记一次绘制属于特定类别的所有数据。

我们首先要做的是获取species中的分类数据,并为每个类别分配一个唯一的ID,以便将正确的数据分开绘制。因此,尝试这样做:

代码语言:javascript
复制
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,这样我们可以更好地看到图。

我们得到的是:

票数 5
EN

Stack Overflow用户

发布于 2019-09-27 19:59:29

分散命令是获取所需信息的最简单方法。

代码语言:javascript
复制
scatter3(meas(:,1),meas(:,1),meas(:,1),size,categorical(species))

“大小”是指用一个特定的大小绘制每个圆圈。

致以问候!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27738438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档