gscatter
分组散点图
语法
说明
示例
使用默认设置的散点图
加载 carsmall
数据集。
load carsmall
在 x 轴上绘制 Displacement
值,在 y 轴上绘制 Horsepower
值。gscatter
使用变量名称作为坐标轴的默认标签。按 Model_Year
对数据点分组。
gscatter(Displacement,Horsepower,Model_Year)
带有一个分组变量的散点图
加载 discrim
数据集。
load discrim
该数据集包含基于气候、住房、教育和健康等九个方面的城市评分。矩阵 ratings
包含评分信息。
绘制矩阵 group
中按城市规模分组的气候评分(第一列)和住房评分(第二列)之间的关系。为每个组选择不同颜色和绘图符号。
gscatter(ratings(:,1),ratings(:,2),group,'br','xo') xlabel('climate') ylabel('housing')
带有多个分组变量的散点图
加载 hospital
数据集。
load hospital
绘制住院患者的年龄和体重。根据患者的性别和吸烟状况对其进行分组。用 o
符号表示非吸烟者,用 *
符号表示吸烟者。
x = hospital.Age; y = hospital.Weight; g = {hospital.Sex,hospital.Smoker}; gscatter(x,y,g,'rkgb','o*',8,'on','Age','Weight') legend('Location','northeastoutside')
指定散点图的坐标区
加载 carsmall
数据集。创建一个包含两个子图的图窗,并以 ax1
和 ax2
形式返回 axes
对象。通过引用对应的 Axes
对象,在每个坐标区中创建一个散点图。在左侧子图中,使用 Model_Year
变量对数据进行分组。在右侧子图中,使用 Cylinders
变量对数据进行分组。通过将对应的 Axes
对象传递给 title
函数,为每个绘图添加标题。
load carsmall color = lines(6); % Generate color values ax1 = subplot(1,2,1); % Left subplot gscatter(ax1,Acceleration,MPG,Model_Year,color(1:3,:)) title(ax1,'Left Subplot (Model Year)') ax2 = subplot(1,2,2); % Right subplot gscatter(ax2,Acceleration,MPG,Cylinders,color(4:6,:)) title(ax2,'Right Subplot (Cylinders)')
指定标记颜色
使用由 hsv
函数确定的颜色图指定标记颜色。
加载激光雷达扫描数据集,该数据集包含一辆车周围对象的坐标,存储为三维点的集合。
load('lidar_subset.mat')
loc = lidar_subset;
要突出显示该车辆周围的环境,请将感兴趣区域设置为车辆左右各 20 米、车辆前后各 20 米以及路面上方的区域。
xBound = 20; % in meters yBound = 20; % in meters zLowerBound = 0; % in meters
裁剪数据以仅包含指定区域内的点。
indices = loc(:,1) <= xBound & loc(:,1) >= -xBound ... & loc(:,2) <= yBound & loc(:,2) >= -yBound ... & loc(:,3) > zLowerBound; loc = loc(indices,:);
使用具有两两距离的 dbscan
对数据进行聚类。
D = pdist2(loc,loc); idx = dbscan(D,2,50,'Distance','precomputed');
使用 gscatter
函数将生成的簇可视化为二维组散点图。默认情况下,gscatter
使用七种 MATLAB 默认颜色。如果唯一簇的数量超过七个,该函数将根据需要循环使用这些默认颜色。找出簇数,并使用 hsv
函数生成相应的颜色数。指定标记颜色以对每个簇使用唯一颜色。
numGroups = length(unique(idx)); clr = hsv(numGroups); gscatter(loc(:,1),loc(:,2),idx,clr) xlabel('x') ylabel('y')
创建和修改散点图
加载 carbig
数据集。
load carbig
创建一个散点图,比较 Acceleration
和 MPG
。根据 Origin
对数据点进行分组。
h = gscatter(Acceleration,MPG,Origin)
h = 7x1 Line array: Line (USA) Line (France) Line (Japan) Line (Germany) Line (Sweden) Line (Italy) Line (England)
显示与标注为 (Japan)
的组对应的 Line
对象。
jgroup = h(3)
jgroup = Line (Japan) with properties: Color: [0.9290 0.6940 0.1250] LineStyle: 'none' LineWidth: 0.5000 Marker: '.' MarkerSize: 15 MarkerFaceColor: 'none' XData: [15 14.5000 14.5000 14 19 18 15.5000 13.5000 17 14.5000 16.5000 19 16.5000 13.5000 13.5000 19 21 16.5000 19 15 15.5000 16 13.5000 17 17.5000 17.4000 17 16.4000 15.5000 18.5000 16.8000 18.2000 16.4000 14.5000 ... ] (1x79 double) YData: [24 27 27 25 31 35 24 19 28 23 27 20 22 18 20 31 32 31 32 24 26 29 24 24 33 33 32 28 19 31.5000 33.5000 26 30 22 21.5000 32.8000 39.4000 36.1000 27.5000 27.2000 21.1000 23.9000 29.5000 34.1000 31.8000 38.1000 ... ] (1x79 double) Use GET to show all properties
将 Japan
组的标记颜色更改为黑色。
jgroup.Color = 'k';
输入参数
x
— x 轴值
数值向量
x 轴值,指定为数值向量。x
必须与 y
具有相同的大小。
数据类型: single
| double
y
— y 轴值
数值向量
y 轴值,指定为数值向量。y
必须与 x
具有相同的大小。
数据类型: single
| double
g
— 分组变量
分类向量 | 逻辑向量 | 数值向量 | 字符数组 | 字符串数组 | 字符向量元胞数组 | 元胞数组
分组变量,指定为分类向量、逻辑向量、数值向量、字符数组、字符串数组或字符向量元胞数组。g
也可以是包含若干分组变量的元胞数组(如 {g1 g2 g3}
),在这种情况下,所有分组变量的值相同的观测值都会放在同一个组中。同一组中的点以相同的标记颜色、符号和大小显示在散点图上。
g
中的行数必须等于 x
的长度。
示例: species
示例: {Cylinders,Origin}
数据类型: categorical
| logical
| single
| double
| char
| string
| cell
clr
— 标记颜色
MATLAB® 默认颜色 (默认) | 由短颜色名称组成的字符向量或字符串标量 | RGB 三元组矩阵
标记颜色,指定为由短颜色名称组成的字符向量或字符串标量或 RGB 三元组矩阵。
如果想自定义颜色,请指定一个 RGB 三元组矩阵。RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1]
范围内,例如 [0.4 0.6 0.7]
。
此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项和等效的 RGB 三元组。
短名称 | RGB 三元组 | 外观 |
---|---|---|
'r' | [1 0 0] | |
'g' | [0 1 0] | |
'b' | [0 0 1] | |
'c' | [0 1 1] | |
'm' | [1 0 1] | |
'y' | [1 1 0] | |
'k' | [0 0 0] | |
'w' | [1 1 1] | |
以下是 MATLAB 在许多类型的绘图中使用的默认颜色的 RGB 三元组颜色代码。
RGB 三元组 | 外观 |
---|---|
[0 0.4470 0.7410] | |
[0.8500 0.3250 0.0980] | |
[0.9290 0.6940 0.1250] | |
[0.4940 0.1840 0.5560] | |
[0.4660 0.6740 0.1880] | |
[0.3010 0.7450 0.9330] | |
[0.6350 0.0780 0.1840] | |
clr
的默认值为包含 MATLAB 默认颜色的 RGB 三元组矩阵。
如果您没有为 g
中的所有唯一组指定足够多的颜色,则 gscatter
会循环使用 clr
中指定的值。如果在唯一组的数量超过默认颜色数量 (7) 时使用默认值,则 gscatter
会根据需要循环使用这些默认值。
示例: 'rgb'
示例: [0 0 1; 0 0 0]
数据类型: char
| string
| single
| double
sym
— 标记符号
'.'
(默认) | 由符号组成的字符向量或字符串标量
标记符号,指定为由 plot
函数识别的符号组成的字符向量或字符串标量。下表列出了可用的标记符号。
值 | 描述 |
---|---|
'o' | 圆形 |
'+' | 加号 |
'*' | 星号 |
'.' | 点 |
'x' | 叉号 |
's' | 正方形 |
'd' | 菱形 |
'^' | 上三角 |
'v' | 下三角 |
'>' | 右三角 |
'<' | 左三角 |
'p' | 五角星(五角形) |
'h' | 六角星(六角形) |
'none' | 无标记 |
如果没有为所有组指定足够多的值,则 gscatter
会根据需要循环使用指定的值。
示例: 'o+*v'
数据类型: char
| string
siz
— 标记大小
正数值向量
标记大小,指定为以磅为单位的正数值向量。默认值由观测值的数目确定。如果没有为所有组指定足够多的值,则 gscatter
会根据需要循环使用指定的值。
示例: [6 12]
数据类型: single
| double
doleg
— 包含图例的选项
'on'
(默认) | 'off'
包含图例的选项,指定为 'on'
或 'off'
。默认情况下,图例显示在图上。
xnam
— x 轴标签
x
变量名称 (默认) | 字符向量 | 字符串标量
x 轴标签,指定为字符向量或字符串标量。
数据类型: char
| string
ynam
— y 轴标签
y
变量名称 (默认) | 字符向量 | 字符串标量
y 轴标签,指定为字符向量或字符串标量。
数据类型: char
| string
输出参数
版本历史记录
在 R2006a 之前推出R2022a: gscatter
使用 MATLAB 默认颜色方案
从 R2022a 开始,gscatter
函数使用 MATLAB 默认颜色方案,按照坐标区的 ColorOrder
属性中指定的顺序确定标记颜色。
在以前的版本中,gscatter
函数使用 hsv
函数返回的颜色图。如果要使用 hsv
颜色图确定标记颜色,请将标记颜色(gscatter
的第四个输入参数)指定为 hsv(numGroups)
,其中 numGroups
是分组变量中唯一组组合的数量。
如果您使用新默认颜色方案,并且唯一组的数量超过默认颜色数量 (7),则 gscatter
会根据需要循环使用默认值。如果要对不同组使用不同颜色,请将标记颜色指定为 hsv(numGroups)
。有关示例,请参阅指定标记颜色。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)