无法再调整图形高度,只是宽度

时间:2017-06-21 12:51:36

标签: matlab plot matlab-figure figure

我使用Matlab在一个循环中制作了大约1000个视频。视频包含一个1000x1000像素的数字,里面有不断改变的情节,由

启动
h=figure('units','pixels','Position',[0 0 1000 1000])

每个视频包含约20-200帧,每个图包含5个子图和文本框(here is an example of one frame)。

当一个数字的图形尺寸突然只有1000 * 999像素时,大约800个视频(在循环内)的一切正常。当这个错误发生时,我试图调整高度,但是这样做有效。无论是拖动窗口,还是使用代码:

set(gcf, 'Units', 'pixels','Position',[0 0 1000 1000])

但我可以调整宽度。有谁知道会导致这个问题的原因?

编辑:当我使用opengl software时,everthing工作正常,但质量远不如此。

基本循环(我试图尽可能缩短):

   for i=1:length(idx) %loop over video
            %Create figure and title
            fh=figure('units','pixels','Position',[0 0 1000 1000])

            subQ=subplot_tight(3,2,[1,2])
            p_Q=plot(Q_time_num(idx_Q(i,1):idx_Q(i,2)), Q(idx_Q(i,1):idx_Q(i,2)),...
                Q_time_num(idx_Q(i,1):idx_Q(i,2)), Q_trunc(idx_Q(i,1):idx_Q(i,2)),'--')

            an_tit=annotation('textbox',[0.48 0.89 0.1 0.1],'String',tit_string)
            set(an_tit, 'horizontalAlignment', 'center')

            for i_s = 1:numel(ind) %loop over each frame

                for ii=1:4length(fieldnames(Data)) %loop over the 4 subplots
                    if i_s==1
                        sub_p(ii)=subplot_tight(3,2,ii+2)
                        h1(ii)=plot(bord(:,2),bord(:,1),'color','k','linewidth',2,'Parent',sub_p(ii));
                        c(ii)=colorbar;

                        title([infos{ii,3},' - [',infos{ii,2},']'],'Interpreter','none')
                        hold on;
                        p(ii)=scatter(bord(cc,2),bord(cc,1),'MarkerEdgeColor',[0 0 0],...
                            'MarkerFaceColor',[0 0 0],'LineWidth',2,'Parent',sub_p(ii));
                        hold off;
                    end

                    hold on
                 [C,h2(ii)]=contourf(longitude,latitude,rot90(flipud(temp)),'Parent',sub_p(ii)) ;
                    clabel(C,h2(ii))
                    set(sub_p(ii),'Position',A(ii+1,:));
                    set(gcf, 'color', 'white');
                    uistack(h1(ii),'up',3)
                    uistack(p(ii),'up',3)
                end
                moving_img %save figure as frame
                delete(line_Q);delete(h2(:)); delete(text_an)
            end
            close all
        end

0 个答案:

没有答案