MATLAB中bar函数的使用

目录

语法

说明

示例

创建条形图

指定条形位置

指定条形宽度

显示条形组

显示堆叠条形图

显示具有负数据的堆叠条形

指定分类数据

在条形末端指定标签

为条形图指定坐标区

指定条形颜色

指定条形和轮廓颜色 

控制单个条形的颜色 

使用颜色图颜色的条形图

自定义分组或堆叠条形中的一个序列 


        bar函数的功能是绘制条形图。

语法

bar(y)
bar(x,y)
bar(___,width)
bar(___,style)
bar(___,color)
bar(___,Name,Value)
bar(ax,___)
b = bar(___)

说明

​bar(y) 创建一个条形图,y 中的每个元素对应一个条形。如果 y 是 m×n 矩阵,则 bar 创建每组包含 n 个条形的 m 个组。​

​bar(x,y) 在 x 指定的位置绘制条形。

​bar(___,width) 设置条形的相对宽度以控制组中各个条形的间隔。将 width 指定为标量值。可以将此选项与前面语法中的任何输入参数组合一起使用。​

​bar(___,style) 指定条形组的样式。例如,使用 'stacked' 将每个组显示为一个多种颜色的条形。

​bar(___,color) 设置所有条形的颜色。例如,使用 'r' 表示红色条形。

​bar(___,Name,Value) 使用一个或多个名称-值对组参数指定条形图的属性。仅使用默认 'grouped' 或 'stacked' 样式的条形图支持设置条形属性。在所有其他输入参数之后指定名称-值对组参数。​

​bar(ax,___) 将图形绘制到 ax 指定的坐标区中,而不是当前坐标区 (gca) 中。选项 ax 可以位于前面的语法中的任何输入参数组合之前。

​b = bar(___) 返回一个或多个 Bar 对象。如果 y 是向量,则 bar 将创建一个 Bar 对象。如果 y 是矩阵,则 bar 为每个序列返回一个 Bar 对象。显示条形图后,使用 b 设置条形的属性。​

示例

创建条形图

y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y)

指定条形位置

        指定沿 x 轴的条形位置。 

x = 1900:10:2000;
y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(x,y)

指定条形宽度

        将各条形的宽度设置为各条形可用总空间的 40%。

y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y,0.4)

显示条形组

        显示四个条形组,每一组包含三个条形。

y = [2 2 3; 2 5 6; 2 8 9; 2 11 12];
bar(y)

显示堆叠条形图

        为矩阵中的每一行显示一个条形。每个条形的高度是行中各元素之和。

y = [2 2 3; 2 5 6; 2 8 9; 2 11 12];
bar(y,'stacked')

显示具有负数据的堆叠条形

        将x定义为一个包含三个年份值的向量。将 y 定义为包含负值和正值组合的矩阵。在条形图中显示这些值。

x = [1980 1990 2000];
y = [15 20 -5; 10 -17 21; -10 5 15];
bar(x,y,'stacked')

指定分类数据

        指示条形图类别的一种方法是将 X 指定为分类数组。bar 函数使用经过排序的类别列表,因此条形的显示顺序可能与您预期的有所不同。要保留顺序,请调用 reordercats 函数。

        将 X 定义为分类数组,并调用 reordercats 函数来指定条形的顺序。然后将 Y 定义为条形高度向量,并显示条形图。

X = categorical({'Small','Medium','Large','Extra Large'});
X = reordercats(X,{'Small','Medium','Large','Extra Large'});
Y = [10 21 33 52];
bar(X,Y)

在条形末端指定标签

        将 vals 定义为一个包含两个数据集的值的矩阵。在条形图中显示值,并指定输出参数。由于有两个数据集,bar 返回包含两个 Bar 对象的向量。

x = [1 2 3];
vals = [2 3 6; 11 23 26];
b = bar(x,vals);

        在第一个条形序列的末端显示值。通过获取第一个 Bar 对象的 XEndPoints 和 YEndPoints 属性,获取条形末端的坐标。将这些坐标传递给 text 函数,并指定垂直和水平对齐方式,让值显示在条形末端上方居中处。 

xtips1 = b(1).XEndPoints;
ytips1 = b(1).YEndPoints;
labels1 = string(b(1).YData);
text(xtips1,ytips1,labels1,'HorizontalAlignment','center',...
    'VerticalAlignment','bottom')

         接下来,在第二个条形序列的末端上方显示值。 

xtips2 = b(2).XEndPoints;
ytips2 = b(2).YEndPoints;
labels2 = string(b(2).YData);
text(xtips2,ytips2,labels2,'HorizontalAlignment','center',...
    'VerticalAlignment','bottom')

为条形图指定坐标区

        从 R2019b 开始,可以使用 tiledlayout 和 nexttile 函数显示分块条形图。调用 tiledlayout 函数以创建一个 2×1 分块图布局。调用 nexttile 函数以创建坐标区对象 ax1 和 ax2。在顶部坐标区中显示条形图。在底部坐标区中,显示相同数据的堆叠条形图。

y = [1 2 3; 4 5 6];
tiledlayout(2,1)

% Top bar graph
ax1 = nexttile;
bar(ax1,y)

% Bottom bar graph
ax2 = nexttile;
bar(ax2,y,'stacked')

指定条形颜色

        使用红色条形创建一个条形图。

y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y,'r')

指定条形和轮廓颜色 

        使用 RGB 三元组设置条形内部颜色和轮廓颜色。设置条形轮廓的宽度。 

y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y,'FaceColor',[0 .5 .5],'EdgeColor',[0 .9 .9],'LineWidth',1.5)

控制单个条形的颜色 

        可以使用 Bar 对象的 CData 属性控制单个条形的颜色。

        创建一个条形图并将 Bar 对象赋给一个变量。将 Bar 对象的 FaceColor 属性设置为 'flat',从而使条形图使用 CData 属性中定义的颜色。默认情况下,CData 属性预先填充由默认 RGB 颜色值组成的矩阵。要更改特定的颜色,请更改矩阵中的对应行。例如,更改第二个条形的颜色。

b = bar(rand(10,1));
b.FaceColor = 'flat';
b.CData(2,:) = [.5 0 .5];

使用颜色图颜色的条形图

        通过将 FaceColor 属性设置为 'flat',创建一个使用颜色图颜色的条形图。然后将每个 Bar 对象的 CData 属性设置为一个整数。

y = [1 3 5; 3 2 7; 3 4 2];
b = bar(y,'FaceColor','flat');
for k = 1:size(y,2)
    b(k).CData = k;
end

自定义分组或堆叠条形中的一个序列 

        创建矩阵 y,其中每列为一个数据序列。调用bar函数以在条形图中显示数据,并指定输出参数。输出是包含三个Bar对象的向量,其中每个对象对应一个不同序列。无论条形是分组还是堆叠,均为如此。 

y = [10 15 20; 30 35 40; 50 55 62];
b = bar(y);

        将第三个条形序列设置为绿色。

b(3).FaceColor = [.2 .6 .5];

### 回答1: MATLAB 的 categorical 函数是用于创建分类数据的函数。它将一组数据转换为 categorical 数据类型,该数据类型是一个限定的有限的集合,其中的元素被映射到一组标签。这可以用于提高数据的可视化和分析的效率。 ### 回答2: 在MATLAB中,categorical函数用于将变量转换为分类数据类型。分类数据类型是一种特殊的数据类型,只能取一组已知的离散值。这些离散值可以表示为字符串、数字、逻辑值或datetime类型。 使用categorical函数将变量转换为分类数据类型,可以提高代码的可读性,并在数据可视化和数据分析中提供一些有用的功能。例如,使用分类数据类型可以轻松地创建类别型的统计图表,分组柱形图、堆积柱状图、箱型图等。 categorical函数的语法为: c = categorical(v) c = categorical(v, categories) c = categorical(v, categories, codes) 其中v为要转换为分类数据类型的变量,categories是一个可选的单元数组,指定分类变量的类别名称。codes也是一个可选的单元数组,代表类别名称的编码值。如果未指定类别名称,则categorical函数会自动从v中提取不同的值,并将它们作为类别名称。 下面是一个使用categorical函数的示例: v = [2, 4, 4, 1, 3, 3, 2]; c = categorical(v); bar(c) xlabel('Category') ylabel('Value') title('Categorical Data') 这个代码将变量v转换为分类数据类型c,并使用bar函数绘制了一个分组柱形图。结果如下: 从图表中可以看出,变量v的值被分为了4个类别,每个类别代表一个离散值。使用categorical函数和其他MATLAB函数可以轻松地处理和分析分类数据类型,为数据分析和可视化提供更多的灵活性和功能。 ### 回答3: 在MATLAB中,categorical函数被用于将离散或有限数量的变量编码成一个分类数组。它的语法如下: c = categorical(values) c = categorical(values, categories) c = categorical(values, categories, codes) 其中values是一个数组或一个cell数组,包含要转换的数据;categories是一个cell数组,包含分类(category)的名称,如果categories不被指定,则函数使用数据中现有的unique值作为分类。codes是一个整数数组,包含categories中每个分类的编码(code),代码默认值为1至numel(categories)。 函数返回一个分类数组(categorical array),在这个数组中,每个值都关联了一个特定的名称和代码。这个数组可以作为数据的一部分用于分析和可视化,并提供了一些快速查找和截取数据的功能。 一个分类数组可以与其他分类数组或数字数组进行计算。在计算时,分类数组的每个值都被解析为其对应的代码,这样就能够对数据进行快速有效的处理。分类数组还可以用于快速筛选和截取数据,只需要指定相应的名称或代码即可。 总之,在MATLAB中,categorical函数是一个非常有用的工具,可以帮助我们有效地处理离散或有限数量的数据,并提供了快速分类、计算、分析和可视化的功能。因此,在MATLAB编程时,掌握categorical函数使用方法十分重要。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值