Matlab绘图方法整理

一、二维图

1、格式

plot(x)——缺省自变量绘图格式


plot(x,y)——以y(x)的函数关系作图。

如果y是n*m的矩阵,则x为自变量,作出m条曲线。


plot(x1,y1,x2,y2,…,xn,yn)——多条曲线绘图格式


plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n)——含选项的绘图格式


2、图形的辅助标注和窗口的分割

title(图形说明)


xlabel(x轴说明)


ylabel(y轴说明)


text(x,y,txt)——在点(x,y)处添加文字说明


legend(图例一,图例二,…)


subplot(m,n,p)——将绘图区域分割成m*n个子区域,并按照行 从左至右,从上至下 依次编号。p表示第p个绘图子区域。


注意:如果是要两个图画到同一个坐标里面,则在两个plot函数之间添加一行hold on


3、绘图参数


4、条形图

bar(y)创建一个条形图,y中的每个元素对应一个条形。

如果y是 m×n 矩阵,则bar创建每组包含 n 个条形的 m个组。


bar(x,y)x指定的位置绘制条形。x为单增向量。


bar(**___**,width)设置条形的相对宽度和控制在一组内条形的间距,默认值为0.8。

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

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


bar(**___**,[style](https://link.zhihu.com/?target=https%3A//ww2.mathworks.cn/help/matlab/ref/bar.html%3FsearchHighlight%3D%25E6%259D%25A1%25E5%25BD%25A2%25E5%259B%25BE%26s_tid%3Dsrchtitle_%2525E6%25259D%2525A1%2525E5%2525BD%2525A2%2525E5%25259B%2525BE_3%23mw_1c5ca259-be55-4bb7-85e3-b409c43fa397))指定条形组的样式。类型有“group”和“stack”。

**group:**若y为n*m矩阵,则bar显示n组,每组m个条形图

**stack:**对矩阵的每一个行向量显示在一个条形中,条形的高度为该行向量中的分量和,其中同一条形中的每个向量用不同的颜色显示出来,从而可以显示每个向量中的分布。


指定分类数据

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

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

clc;clear; 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对象的向量。

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

clc;clear; x = [1 2 3]; vals = [2 3 6; 11 23 26]; b = bar(x,vals); xtips1 = b(1).XEndPoints; ytips1 = b(1).YEndPoints; labels1 = string(b(1).YData); text(xtips1,ytips1,labels1,'HorizontalAlignment','center','VerticalAlignment','bottom')

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

clc;clear; x = [1 2 3]; vals = [2 3 6; 11 23 26]; b = bar(x,vals); 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')


5、直方图

histogram(X)

基于X创建直方图。histogram函数使用自动分 bin 算法,然后返回均匀宽度的 bin,这些 bin 可涵盖X中的元素范围并显示分布的基本形状。

histogram将 bin 显示为矩形,这样每个矩形的高度就表示 bin 中的元素数量。

此处将上一节的条形图和直方图做了一个对比——条形图是用条形的高度表示频数的大小,而直方图实际上是用长方形的面积表示频数,当长方形的宽相等的时候可以用矩形的的高表示频数;

clc;clear; x = randn(10000,1); subplot(1,2,1);bar(x);title('bargram'); subplot(1,2,2);h = histogram(x);title('histogram');

6、饼图

——基础饼图

pie(X) 使用 X 中的数据绘制饼图。饼图的每个扇区代表 X 中的一个元素。

  • 如果 sum(X) ≤ 1X 中的值直接指定饼图扇区的面积。如果 sum(X) < 1pie 仅绘制部分饼图。

  • 如果 sum(X) > 1,则 pie 通过 X/sum(X) 对值进行归一化,以确定饼图的每个扇区的面积。

  • 如果 Xcategorical 数据类型,则扇区对应于类别。每个扇区的面积是类别中的元素数除以 X 中的元素数的结果。

——可偏移饼图

pie(X,[explode](https://link.zhihu.com/?target=https%3A//ww2.mathworks.cn/help/matlab/ref/pie.html%3FsearchHighlight%3D%25E9%259D%25A2%25E7%25A7%25AF%25E5%259B%25BE%26s_tid%3Dsrchtitle_%2525E9%25259D%2525A2%2525E7%2525A7%2525AF%2525E5%25259B%2525BE_6%23buiol_j-1-explode))——从饼状图中分离出一部分,explode是与x同维的矩阵。当所有元素为零时,饼状图各部分连一起组成一个圆。当其中有非零元时,元素对应的扇形往外移


——带标签饼图

pie(X,labels)指定用于标注饼图扇区的选项。在本例中,X必须为数值。

修改饼图的文本标签

clc;clear; X = 1:3; labels = {'Taxes','Expenses','Profit'}; p = pie(X,labels) t = p(6); t.BackgroundColor = 'cyan'; t.EdgeColor = 'red'; t.FontSize = 14;

指定百分比标签的格式——创建一个饼图,并指定格式表达式以使每个标签显示小数点后三位数。要在标签中包含百分号,请在表达式末尾指定'%%'

那么,又想有标签又想显示百分比怎么办呢?

还可以使用上述提及的逻辑变量进行分离:


——比较两个饼图

clc;clear; %创建包含两年财务数据的向量 y2010 和 y2011。 % 然后创建一个包含值标签的元胞数组。 y2010 = [50 0 100 95]; y2011 = [65 22 97 120]; labels = {'Investments','Cash','Operations','Sales'}; %创建一个 1×2 分块图布局,并显示两个饼图,每个饼图都有一个标题。 % 然后在布局的东侧图块中显示一个共享图例。 % 为此,请使用返回参数调用 legend 函数来存储图例对象。 % 然后通过将 Layout.Tile 属性设置为 'east',将图例移至 east 图块。 t = tiledlayout(1,2,'TileSpacing','compact'); % Create pie charts ax1 = nexttile; pie(ax1,y2010) title('2010') ax2 = nexttile; pie(ax2,y2011) title('2011') % Create legend lgd = legend(labels); lgd.Layout.Tile = 'east';

——三维饼图

pie3(X)使用X中的数据绘制三维饼图。X中的每个元素表示饼图中的一个扇区。

  • 如果 sum(X) ≤ 1X 中的值直接指定饼图切片的面积。如果 sum(X) < 1pie3 仅绘制部分饼图。
  • 如果 X 中元素的总和大于一,则 pie3 会通过 X/sum(X) 将值归一化,以确定饼图每个扇区的面积。

figure加不加都行,区别在于是否保留之前的图像。

为了偏移第二个饼图扇区,请将对应的explode元素设置为 1。

创建三维饼图并指定文本标签。


参考资料

Simulink Documentation - MathWorks 中国

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab是一种专业的科学计算和数据可视化软件。它具有强大的数值计算功能,并且易于使用,因此在学术界和工业界广泛应用。下面我将对Matlab的基础知识进行整理。 首先,Matlab的基本语法与其他编程语言相似,使用英文关键字和符号。在Matlab中,可以定义变量并进行数值计算。例如,可以使用"="符号给变量赋值,使用"+"、"-"、"*"、"/"等符号进行数值运算。Matlab还支持矩阵运算,可以使用"[]"符号创建矩阵,并使用"*"符号进行矩阵乘法。另外,还可以使用"for"、"while"等循环语句和"if"、"else"等条件语句来控制程序的流程。 其次,Matlab还提供了各种内置函数和工具箱,用于处理数学、信号处理、图像处理等领域的问题。通过调用相应的函数,可以实现数据处理、绘图、模拟和优化等功能。Matlab还支持自定义函数,可以将常用的代码封装为函数,提高代码的可重用性。 此外,Matlab还具有丰富的图形绘制功能,可以绘制二维和三维图形,包括曲线、散点图、三维表面图等。通过调整图形的属性和样式,可以使图形更加美观和具有可读性。 最后,Matlab还支持与其他编程语言和软件的接口。可以通过调用其他语言编写的函数,实现不同软件之间的数据交互和功能扩展。 总结来说,Matlab是一种功能强大的科学计算和数据可视化软件。掌握Matlab的基础知识,可以进行数值计算、数据处理、图形绘制等各种科学计算任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值