【问题标题】:How to make a movie of a subplot, in which each subplot is a frame?如何制作子情节的电影,其中每个子情节都是一个帧?
【发布时间】:2013-08-16 16:46:47
【问题描述】:

我必须完全按照我的标题所说的去做。我有一个带有子图的图形,例如 3×5。我想在子图中获取所有不同的图形,并将它们中的每一个都设为一个框架(在本例中为 15 个不同的框架)。我尝试了不同的解决方案,但没有任何效果。例如我试过:

writerObj = VideoWriter('try.avi');
writerObj.FrameRate = 1;
open(writerObj);
h= figure(1);

for x=1:15
    hh=subplot(3,5, x);
    frame=getframe(hh);
    writeVideo(writerObj,frame);
end
close(writerObj);

或者我试过了

writerObj = VideoWriter('try.avi');
writerObj.FrameRate = 1;
open(writerObj);
h= figure(1);
fig=gcf;
axesHandles = get(gcf,'children');
for x=1:15
    hh=subplot(3,5, x);
    frame=getframe(axesHandles(x));
    writeVideo(writerObj,frame);
end
close(writerObj);

【问题讨论】:

  • 我尝试在代码中做一些小调整,将每一帧保存在一个称为帧的向量中,然后在电影(帧)中播放所有内容。这种工作,但并不完美,并给我一个很好的提示,为什么我以前的方式行不通。似乎不同的子图大小不同。我不明白为什么会这样。有人知道吗?
  • 请告诉我们为什么这些不起作用?有什么问题或错误?是因为您的框架/轴的大小不同吗?
  • 对不起,我应该这么说的。是的,这是报告给 matlab 的问题。但是轴的大小应该相同。我现在在想问题可能是我给轴的值是双倍的,所以也许 matlab 可以以一种奇怪的方式修改每个子图的轴,使其不总是相同的?

标签: matlab video matlab-figure subplot


【解决方案1】:

我认为问题与轴的 'PlotBoxAspectRatioMode' 属性在首次创建时设置为 'auto' 有关。您需要使用axis 或使用其他选项指定您的轴限制。如果它适合您的数据,请尝试为每个轴指定 axis equal。或者axis square

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    • 2021-10-24
    相关资源
    最近更新 更多