【问题标题】:matlab animate 2 3d plots in same figure, have hold on one and not the othermatlab animate 2 3d plots in同一张图,抓住一个而不是另一个
【发布时间】:2013-04-19 13:29:05
【问题描述】:

对于我目前在 matlab 中的项目,我正在对感染在全球的传播进行建模。我用来让感染跳跃的主要方法是预设机场位置。我还通过动画线条连接它们来展示感染何时从一个机场传播到另一个机场。主地图是一个设置为默认 2D 视图的 3d 冲浪图,并且使用 plot3 绘制线条,它也在 2D 视图中。

除了一个问题,我一切正常。我需要在同一个图中同时为两个 3D 图表设置动画,但我需要让地图的动画保持不开启,同时让连接机场的线的动画保持开启,以便所有路径仍会显示。

关于如何做到这一点的任何想法?

【问题讨论】:

  • 对我来说不是很清楚,但如果你有每个图形对象的句柄,你可以只更新你想要的。如果您发布当前代码会有所帮助(最好是一个小例子,而不是全部)
  • 代码很长,大部分代码都需要看看发生了什么,所以我认为一小段代码不会有太大帮助。基本上我要做的是一个 51x101x1 尺寸的冲浪图,它正在被动画化,因此它的颜色随着循环的每一次通过而变化,并且它的文本值也总是在变化。
  • 这些我不想保留,以便每次都重新显示。图中绘制的另一件事是用 plot3 绘制了多条线。这些线绘制在尺寸 51,101,4 内。随着主循环的每一次通过,这些线的随机数被绘制出来。我希望能够只在这些行上使用保持,这样即使每次都在刷新其他所有内容,它们也会始终显示出来。这有帮助吗?
  • 我不确定..我发布了一个例子,看看它是否适用于你的情况:)

标签: matlab animation 3d plot


【解决方案1】:

让我举一个动画的例子,也许会有所帮助:

figure('Renderer','zbuffer')

%# this is the surface we will be animating
Z = peaks;
hSurf = surf(Z);
axis tight;    %# fix axis limits

%# these are some fixed lines
hLine(1) = line([0 50], [0 50], [-5 5], 'Color','r' ,'LineWidth',4);
hLine(2) = line([40 0], [0 40], [-5 5], 'Color','g' ,'LineWidth',4);

%# some text as well
hTxt = text(10,40,5, '0');

%# iterations
for j = 1:20
    %# animate the Z-coordinates of the surface
    set(hSurf, 'ZData',sin(2*pi*j/20)*Z)

    %# change text
    set(hTxt, 'String',num2str(j))

    %# flush + a small delay
    pause(0.05)
end

注意我们如何保存图形对象(表面、文本和线条)的句柄,以便我们以后可以操作它们。

【讨论】:

  • 这可能适用于我正在尝试做的事情,让我玩一下看看它是否会起作用
  • 您知道在循环中调用 surf 的方法吗?动画是用drawow完成的吗?此外,我试图让线条的绘图也动画化,我希望冲浪图和折线图的唯一区别是每次绘制线条时都会重新绘制和重新显示冲浪,但总是绘制后可见。
  • 我会向您发送一封电子邮件,其中包含 2 张基本上我想要的照片,但请耐心等待
  • @user2299338:我不确定它是否仍然重要(您似乎找到了适合您的解决方案),但我看了看并根据屏幕截图准备了自己的小示例。如果您有兴趣,这里是代码:pastebin.com/GJ3NvmKc
【解决方案2】:

我想出了一种方法来做到这一点,即保存我不想更改的所有内容的句柄,始终保持等待,然后在添加新版本之前使用删除功能直接删除以前的版本。我还添加了 uistack 以便它们按照我想要的顺序出现在屏幕上

【讨论】:

  • 更新现有图形句柄的数据(如我在示例中所示)通常比每次迭代从头开始重绘更快。但我想它也会起作用:)
  • 好的,感谢您的帮助!生病看看我是否可以弄清楚更新方法,看看它是否可以加快过渡的一天。再次感谢
  • 经过大量更改后,我能够按照您在答案中设置的方式让我的工作与他们一起工作,我必须说效果很好!再次感谢
猜你喜欢
  • 2022-01-21
  • 2018-08-07
  • 2015-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-27
  • 1970-01-01
  • 2014-09-08
相关资源
最近更新 更多