当前位置:网站首页>MATLAB(5)绘图
MATLAB(5)绘图
2022-08-03 03:23:00 【凯之~】
目录
MATLAB图形绘制功能十分强大(毕竟绘图也是数据处理的一种),除了最基本的线图、直方图、饼图外,MATLAB还支持动态添加数据的动图以及通过像素点显示完整的图片,如下图所示。本文仅介绍最基本也是最常用的线图、动画等相关函数的使用,其它如曲面图、数据分布图可参考MATLAB绘图函数。
线图
线图,即描点画像,通过变量存储各个点的坐标后,通过函数plot(绘制二维图形)或plot3(绘制三维图形)连接各个点并显示在Figure界面上。当然,这只是最简单,最基础的部分,一般来说会添加其它内容,比如:
- 设置连接线的线型(实线、虚线、点线等)、颜色、数据点的标记符号:添加plot参数。
- 设置 连接线的线宽及标记点的 大小、颜色:通过 Name,Value 对组指定。
- 设置绘图位置:通过 figure、tiledlayout等设置。
- 保持线图不被覆盖:
hold on
,此时继续绘图会重叠在原有的图上面。 - 为当前图窗设置标题、坐标轴:通过title、axis函数设置。
当然,这些有的是各种图形通用的,比如3、4、5点。
MATLAB绘制图形是在当前图窗绘制的,包括设置线型、标题等都是。
plot
plot函数用于绘制二维线图,基本格式如下面代码中的第1行所示,X和Y建议是一维数组,但如果是两个多维数组(必须维数相同,形成和列数相同数量的线条)或1个一维数组和1个多维数组也可以,但强烈建议一维数组,防止出现奇奇怪怪的情况。
除了通过两个多维数组以一次性绘制多条曲线外,还可以如下面代码中的第2行所示,在一个图形内绘制n条线。(重复plot函数会导致之前的数据被覆盖,除非使用hold on
)
plot(X,Y)
plot(X1,Y1,X2,Y2,……,Xn,Yn)
plot函数也可以只使用一个参数以创建线图:
plot(X)
%X为一维实数数组:横坐标为数据下标( 1 至 length(X)),纵坐标为数组对应值
% 虚数 横坐标为数组对应值的实数部分,纵坐标为数组对应值的虚数部分
%X为二维数组:绘制数量等于列数的线条,并以行号为横坐标,数组对应值为纵坐标
% 虚数 数组对应值的实数部分,数组对应值的虚数部分纵
线型、线段颜色及标记
线型、颜色及标记通过向plot添加一个字符串参数实现设置,如下所示,LineSpec为字符串,该字符串由分别代表线型、颜色及标记三种字符串构成,例如‘–’代表虚线,'r’代表颜色为红色,'x’代表标记为叉号,那么‘–rx’就是带有叉号标记的红色虚线,当然顺序不固定,'r–x’效果一致。
plot(X,Y,LineSpec)
plot(X1,Y1,LineSpec1,X2,Y2,LineSpec2,……,Xn,Yn,LineSpecn)
参考代码及对应图如下:
线性、颜色、标记对应的字符串如下所示:
线型 | 说明 |
---|---|
- | 实线(默认) |
– | 虚线 |
: | 点线 |
-. | 点划线 |
标记 | 说明 |
---|---|
o | 圆圈 |
+ | 加号 |
* | 星号 |
. | 点 |
x | 叉号 |
s | 方形 |
d | 菱形 |
^ | 上三角 |
v | 下三角 |
> | 右三角 |
< | 左三角 |
p | 五角形 |
h | 六角形 |
颜色 | 说明 |
---|---|
y | 黄色 |
m | 品红色 |
c | 青蓝色 |
r | 红色 |
g | 绿色 |
b | 蓝色 |
w | 白色 |
k | 黑色 |
线宽、标记点大小及颜色
线宽、标记点大小及颜色的设置是通过向plot添加对应的Name(属性),Value (值)对组指定,如下所示。
plot(x,y,'--gs',... %...是MATLAB用于连接两行语句,可以理解为和后面的换行符抵消,使两行 代码表示一个语句
'LineWidth',2,... %Name为LineWidth,表示设置线宽
'MarkerSize',10,... %Name为MarkerSize,表示设置标记点大小
'MarkerEdgeColor','b',... %Name为MarkerEdgeColor,表示设置标记点边缘颜色,这里通过字符串设置
'MarkerFaceColor',[0.2,0.5,0.3]) %Name为MarkerFaceColor,表示设置标记点中心颜色,这里通过0~1的RGB值设置
对应产生的线图如下图所示。
除了上述的Name外,还有其它属性,可参考Line属性。
除了在绘制时设置属性外,绘制完也可以修改线条的相应属性,如以下代码所示,在绘制时获取线条对象,并修改颜色为红色。
f = plot(x,y);
f.Color = 'r';
一般设置属性值的方式不止一种,如设置颜色为红色,除了使用颜色名称’red‘,还可以使用短名称’r‘,RGB三元组[1 0 0],或者十六进制颜色代码 ‘#FF0000’,具体方式可参考Line属性。
绘图位置
figure函数
- 生成默认新图窗,并设置为当前窗口:
figure
。 - 根据对应的Name(属性),Value (值)对组指定图窗属性:
figure(Name Value)
,Figure属性。
同样也可以通过
f=figure()
返回图窗对象,并通过f.Name
进行属性设置。
- 将图窗对象f指定为当前图窗:
figure(f)
。 - 将Number属性为n的图窗指定为当前图窗(若没有则新建后将其Number属性设为n):
figure(n)
。
tiledlayout函数
tiledlayout函数在R2019b开始提供!更早期的可使用subplot函数。
tiledlayout函数可用于设置分块图布局,即使多个图存在于同一个窗口内,通过tiledlayout(m,n)
创建m行n列大小的分块图,通过nexttile函数选择其中一个图窗进行绘图。
- 选择下一个图窗作为当前图窗进行绘图:
nexttile
,如果刚通过tiledlayout函数创建则选择第一个。 - 选择第n个图窗作为当前图窗进行绘图:
nexttile(n)
。 - 将第n个图窗及周围的line*col-1个图窗合并,并设置为当前图窗:
nexttile(n,[line,col])
。 - 通过nexttile可返回相应的图窗对象,此后可以使用
f.Name
进行设置,相应属性和值可参考属性。其实通过tiledlayout函数返回的对象也可以,但设置的是所有的图窗。
标题
- 直接设置标题:
title(字符串)
,将当前图窗的标题名称设置为字符串。 - 为分块图各个图窗设置标题:
title(x,字符串)
,x为通过nexttile返回的图窗对象。(x=nexttile
)
plot3
plot3函数用于绘制三维线图,与plot函数的使用一样,当然每个图对应坐标参数为3。
二维动图
创建动态线条对象:animatedline
- 创建没有数据的动态线条,为了方便添加数据,需要返回一个对象:
D_Line=animatedline()
。 - 创建已包含相应数据的动态线条:
D_Line=animatedline(x,y)
,x和y建议是同样大小的一维矩阵。(animatedline 在这里相当于集成了plot和plot3函数,坐标参数可以直接输入3个) - 创建线条并设置相应线条属性:
D_Line=animatedline(Name,Value)
或D_Line=animatedline(x,y,Name,Value)
。
向动态线条对象添加数据:addpoints
addpoints用于向动态线条对象添加数据,格式为:addpoints(x,y)
,当然,也可以输入3个参数以绘制三维线条。
注意:似乎只有在创建时或通过
D_Line.Name
等才能进行属性设置,而不能边加点边设置属性,换言之,addpoints(h,x+9.4,y2,'color','r')
是不行的,应该是因为addpoints函数无该参数。
更新图窗:drawnow
事实上,通过addpoints添加数据后,在图窗即可绘制相应图像,而无法实现动图的效果,这是因为通过addpoints传入大量数据后,执行时线图会被一次性绘制,哪怕在循环中通过addpoints一次性加一个点,也没法,因为绘制速度太快,因此这里需要drawnow来更新图窗(副作用,也是实现动图的方法:降低显示速度(我猜的)),示例如下代码所示:
h = animatedline('Color','r');
axis([0 4*pi -1 1])
x = linspace(0,4*pi,2000);
for k = 1:length(x)
y = sin(x(k));
addpoints(h,x(k),y);
drawnow
end
可以尝试去除倒数第2行的drawnow,对比效果。
边栏推荐
猜你喜欢
mysql-installer安装教程(详细图文)
log4j设置日志的时区
【剑指offer】——16.数值的整数次方
数字3d虚拟交互展厅顺应时代发展需求和趋势
(一)Nacos注册中心集群环境搭建
Chinese valentine's day??To the liver is the way!!!!!Auto. Js special position control method
PyTorch installation - error when building a virtual environment in conda before installing PyTorch
中原银行实时风控体系建设实践
工作两年成跳槽高峰期,程序员会在一家公司待多久?
【动态规划--01背包】HJ16 购物单
随机推荐
金仓数据库 OCCI 迁移指南(5. 程序开发示例)
Jmeter TCP/UDP测试
MySQL-Explain详解
金仓数据库 Pro*C 迁移指南( 5. 程序开发示例)
【obs】启动推流失败 : Output.StartStreamFailed 调用流程
C语言实验十三 指针(三)
ESP8266-Arduino编程实例-MAX6675冷端补偿K热电偶数字转换器驱动
IPv4编址;A类、B类、C类、D类、E类IP地址(IP地址;网络地址和主机地址;子网掩码;网关;广播地址;)
基于flowable的upp(统一流程平台)运行性能优化(3)
【leetcode热题Hot100】——任务调度器
ClickHouse卸载、重安装
详细讲解一下JVM的内存模型与实现?
ClickHouse uninstall and reinstall
谷粒商城一些疑问总结
重定向printf到USB CDC、串口2
基于 Cyclone IV 在 Quartus 中配置 IP 核中的 PLL、RAM 与 FIFO 的详细步骤及仿真验证
Base64编码原理
单元测试是什么?怎么写?主要测试什么?
15【背景 渐变色】
IDEA如何创建同级工程