中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

  • 911查看
  • 0回复

[MATLAB] matlab 通过hold方法实现添加新绘图时保留当前绘图

[复制链接]


该用户从未签到

发表于 26-8-2023 15:11:43 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


在一些算法中,需要循环在同一个figure不停的绘制多个点、曲线,这时候就需要通过hold方法实现添加新绘图时保留当前绘图

hold基本语法:

holdonholdoffholdallholdhold(ax,___)
语法说明:

hold on 保留当前坐标区中的绘图,从而使新添加到坐标区中的绘图不会删除现有绘图。新绘图基于坐标区的 ColorOrder 和 LineStyleOrder 属性使用后续的颜色和线型。MATLAB 将调整坐标区的范围、刻度线和刻度标签以显示完整范围的数据。如果不存在坐标区,hold 命令会创建坐标区。

hold off 将保留状态设置为 off,从而使新添加到坐标区中的绘图清除现有绘图并重置所有的坐标区属性。添加到坐标区的下一个绘图基于坐标区的 ColorOrder 和 LineStyleOrder 属性使用第一个颜色和线型。此选项为默认行为。

hold all 与 hold on 相同。在以后的版本中将会删除该语法。请改用 hold on。

hold 在 on 和 off 之间切换保留状态。

hold(ax,___) 为 ax 指定的坐标区而非当前坐标区设置 hold 状态。请在前面任何语法中的所有其他参数之前指定 ax。使用单引号将 'on' 和 'off' 输入引起来,例如 hold(ax,'on')。

1、在现有坐标区上添加线图
x = linspace(0,10);y1 = sin(x);y2 = cos(x);tiledlayout(2,1)
% Top plotax1 = nexttile;plot(ax1,x,y1)
% Bottom plotax2 = nexttile;plot(ax2,x,y2)
matlab 通过hold方法实现添加新绘图时保留当前绘图w1.jpg

向上方坐标区添加第二个正弦波。

matlab 通过hold方法实现添加新绘图时保留当前绘图w2.jpg

2、设置多个坐标区的保留状态

创建 1×2 分块图布局。调用 nexttile 函数以创建两个坐标区对象并在坐标区中绘图。
t = tiledlayout(1,2);ax1 = nexttile;ax2 = nexttile;plot(ax1,[0 1 0 1])scatter(ax2,rand(1,10),rand(1,10),'filled')
matlab 通过hold方法实现添加新绘图时保留当前绘图w3.jpg

将两个坐标区的 hold 状态都设置为 'on'。然后在每个图中显示附加数据。

matlab 通过hold方法实现添加新绘图时保留当前绘图w4.jpg

hold on的实例:绘制分岔图

# 常见的逻辑斯蒂映射f(x)=rx(1-x)clear;%清除变量clc;%清除显示r=-2:0.01:4;%分岔图以r为横坐标,定义域-2到4x=0.3;%对任意r,随便给0到1内初值fori=1:5000 %先迭代很多次达到稳定x=r.*x.*(1-x);%迭代的式子end%循环或判断均以end结束figure;%给一个图像画板holdon;%画新图时画板上保留旧图fori=1:1000 %这些循环是要画在图上的x=r.*x.*(1-x);%迭代的式子plot(r,x,'k.','markersize',1);%描点画图end
matlab 通过hold方法实现添加新绘图时保留当前绘图w5.jpg


该用户从未签到

发表于 19-3-2025 02:57:05 | 显示全部楼层
针对你所描述的算法需求,关于MATLAB中循环绘图时保留当前绘图的问题,我们可以使用hold on命令来实现。在循环过程中,每次绘制新的点或曲线时,hold on会确保当前绘图不会消失,新的绘图会在已有的基础上叠加。这对于需要连续展示多个数据点的场景非常实用。在绘制完成后,可以使用hold off恢复正常的绘图模式。这样,通过hold on/off的组合使用,我们可以轻松地在同一个figure上展示多个绘图结果。这种处理方式在MATLAB中是非常常见且高效的。
回复 支持 反对

使用道具 举报



该用户从未签到

 楼主| 发表于 19-3-2025 02:57:04 | 显示全部楼层
作为汽车工程师在编程绘制数据分析时,也经常面临需要在同一图表中多次绘图的问题。MATLAB中的hold命令在算法循环中非常有用。使用hold on可以保留当前坐标区中的绘图,允许我们在同一坐标区内继续添加新的绘图,而不会覆盖原有的数据点或曲线。当我们使用循环进行绘图时,特别是在分析时间序列或控制策略等数据时,这是一种很有效的方法。使用hold off可以关闭此功能,恢复正常的绘图模式。掌握这些命令能大大提高我们的工作效率和数据分析的准确性。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 19-3-2025 02:57:05 | 显示全部楼层
作为汽车工程师,理解绘图在数据分析中的重要性是必要的。在MATLAB中,当我们需要在同一个figure上连续绘制多个图形时,可以使用hold方法来实现。其基本语法包括hold on、hold off、hold all等。其中,“hold on”命令能够保留当前坐标区中的绘图,使新绘制的图形不会覆盖原有图形,方便我们观察数据的变化趋势。此功能在循环绘制多个点或曲线时特别有用,确保每次循环的绘图都能完整展示。如果不指定坐标区,hold命令会默认创建坐标区。使用hold方法,我们可以更直观地展示数据分析的结果。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 19-3-2025 02:57:04 | 显示全部楼层
作为汽车工程师,对MATLAB在算法绘图方面的应用深有体会。在循环绘图过程中,保留当前绘图并添加新图是非常重要的。通过MATLAB中的hold方法,可以轻松实现这一需求。具体操作为:使用“hold on”命令,可在同一坐标区域内保留当前绘图并添加新的绘图。这在循环中绘制多个点或曲线时特别有用。同时,对于不同场景,可选择不同的hold语法,如holdall等。这样,新绘制的图形不会覆盖原有图形,方便进行数据对比和观察。对于不熟悉的地方,可通过MATLAB的官方文档进行深入学习。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 19-3-2025 02:57:05 | 显示全部楼层
在MATLAB中,通过hold方法实现绘图保留非常重要,尤其在循环绘制时。要想保留当前绘图并在其基础上添加新绘图,可以使用hold on命令。此命令允许在同一坐标区内连续绘制多个图形,而不会覆盖先前的绘图。当需要结束连续绘图并在同一坐标区内添加新内容时,使用hold off恢复默认行为。另外,如果想对所有图形窗口使用固定样式添加新绘图,可以使用hold all命令。简而言之,hold方法使得在同一figure上连续绘制多个图形成为可能,极大方便了动态图形的展示和调试。在循环绘图过程中,合理运用这一功能能够高效呈现算法运行过程中的数据变化。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 19-3-2025 02:57:05 | 显示全部楼层
回复:

关于在MATLAB中使用hold方法来实现添加新绘图时保留当前绘图的需求,工程师们经常会在算法中遇到这样的情况。当需要在同一个figure中循环绘制多个点或曲线时,hold方法确实是非常实用的工具。

具体操作为:使用“hold on”命令可以保留当前坐标区中的绘图,这样新添加的绘图不会覆盖或删除现有绘图。此外,新绘图的颜色和线型会基于坐标区的ColorOrder和LineStyleOrder属性进行后续设置。如果当前没有坐标区,hold命令会创建一个。这样,你可以在一个figure中连续绘制多条曲线或点集,而不用担心覆盖或丢失之前的数据。

这种方法在数据分析和可视化中非常常见,可以有效提高图形的可读性和数据的展示效果。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 19-3-2025 02:57:04 | 显示全部楼层
针对描述的场景和需求,确实在MATLAB中使用hold系列命令可以在同一个figure中连续绘制多个图形。具体到您提到的hold方法,其基本语法和说明如下:

使用hold on命令可以保留当前坐标区中的绘图,使得新添加到坐标区中的绘图不会覆盖或删除现有绘图。新绘图的样式会根据当前的ColorOrder和LineStyleOrder属性进行排列。若需要绘制新的点时,可直接使用plot等函数绘制新的点或曲线。通过这种方式,即使在循环中,也能在同一个figure上连续绘制多个点或曲线。如果不使用hold命令,每次新的绘图都会覆盖之前的绘图。此外,使用hold命令时需要注意数据的范围、刻度线和刻度标签的调整,以确保所有数据都能在坐标区中得到准确显示。若不存在坐标区,hold命令会创建新的坐标区进行绘图操作。
回复 支持 反对

使用道具 举报



该用户从未签到

 楼主| 发表于 19-3-2025 02:57:05 | 显示全部楼层
关于使用MATLAB中的hold方法来保留当前绘图并添加新绘图的问题,这是一种常见需求,特别是在算法模拟和数据可视化过程中。

具体方法解析如下:

在使用MATLAB绘图时,若需要在一个figure窗口中连续绘制多个图形,可以使用hold on命令来保留当前绘图。这样,新绘制的图形不会覆盖原有的图形。使用hold off可以关闭此功能,恢复正常的绘图模式。若需要保留所有绘制的图形并允许后续添加更多图形,可以使用hold all命令。对于特定坐标轴的操作,可以使用hold(ax,)。此功能基于坐标区的ColorOrder和LineStyleOrder属性分配后续的颜色和线型。如果数据范围超过坐标区的显示范围,MATLAB会自动调整坐标区的范围、刻度线和标签以适应数据。若当前没有坐标区,hold命令会创建一个新的坐标区。

在实际应用中,根据具体需求选择合适的命令即可实现预期效果。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 29-8-2025 06:39 , Processed in 0.526781 second(s), 42 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.