2016-06-20 5 views
1

관련 정보를 기록 할 때 색상이 변경 축. GIF 파일을 쓰는 데 문제가 없지만, PowerPoint에서 재생하거나 OS X Finder에서 미리 볼 때 축 레이블의 색상이 바뀝니다. 색상 변경 외에도 다음과 같은 경고가 표시됩니다.MATLAB은 GIF에게

경고 : 이미지 데이터에 범위를 벗어난 값이 포함되어 있습니다. 범위를 벗어나는 값은 가장 가까운 유효 값이 부여됩니다.

현재 디렉토리의 모든 데이터 파일을 가져 와서 플롯하고 각 프레임을 잡고 GIF에 넣습니다. 여기 내 코드는 다음과 같습니다.

%Create MATLAB movie from plots 
clearvars 
%addpath('C:\Users\ucmuser\Documents\MATLAB') 
filename='cooldown_movie.gif'; 
ext_in='txt'; 
[~,listing]=f_search(ext_in); 
[r,~]=size(listing); 
listing=natsortfiles(listing); 
F=figure; 

%r=20 is used for quick debugging (original is 460 files). 
r=20; 
% y=linspace(1,2*pi,100); 
% x=linspace(1,100,100); 
%C(1,1,1,r)=0; 
for i=1:r 
     A=dlmread(listing{i}); 
     listing{i}=strrep(listing{i},'_','\_'); 
     x=A(1,:); %X Array 
     y=A(2,:); %Y Array 
      plot(x./1E9,y.*1E3,'-','LineWidth',1.2,... 
       'Color',[0.8500 0.3250 0.0980]); 
    grid off 
    xlabel('Frequency (GHz)','FontSize',18,'FontWeight','bold') 
    ylabel('Voltage (mV)','FontSize',18,'FontWeight','bold') 
    title('Cooldown Movie','FontSize',24,'FontWeight','bold') 
    G(i)=getframe(gcf); 
    drawnow 
    frame = G(i); 
% im = frame2im(frame); 
    [C(:,:,1,i),map] = rgb2ind(frame.cdata,256,'nodither'); 
%  if r == 1; 
%   imwrite(C,map,filename,'gif','LoopCount',Inf,'DelayTime',0); 
%  else 
%   imwrite(C,map,filename,'gif','WriteMode','append','DelayTime',0); 
%  end 
end 
imwrite(C,map,filename,'gif','LoopCount',Inf,'DelayTime',0); 

샘플 이미지는 다음과 같습니다. 축 레이블의 색상이 바뀝니다. 그리드를 켜면 그레이 스케일 강도가 변하는 그리드의 효과가 더욱 분명 해집니다. 나는 한계를 설정하려고 시도했으나 효과는 여전히 존재합니다.

Sample graph displaying axes labels color change

+1

이것은 아마도 gif의 처리 방법 때문일 수 있습니다. 축이 끊임없이 변화하지 않도록'xlim'과'ylim'을 수동으로 지정해 보셨습니까? 동영상을 정리해야합니다. – Suever

+0

예 한계 설정을 시도했지만 도움이되지 않습니다. –

+0

축 제한을 설정하면 그림에 색상 효과가 깜박입니다. –

답변

0

는 내가 작동 왜 아주 확실하지 않다하더라도 당분간 해결책을 찾았습니다. 나는 figure 속성을 조사하기 시작했고 GraphicsSmoothing 속성 (for 루프 앞에 F=figure;F.GraphicsSmoothing='off'; 유형)으로 바 꾸었습니다. 이 문제는 원래 범위를 벗어났습니다. 오류가 발생했습니다.

GraphicsSmoothing 속성을 "on"으로 설정하고 처음 20 개의 데이터 파일을 살펴본 결과 max(max(max(C)))을 통해 최대 색인 색 값 22가 있습니다. GraphicsSmoothing을 "off"로 설정 한 상태에서 동일한 코드를 수행하면 최대 값이 4가됩니다.

GraphicsSMoothing이 켜지고 꺼지는 극단적 인 색상 차이를 표시하는 두 개의 이미지를 첨부하고 있습니다.

GraphicsSmoothing turned Off

누군가가이 경우 이유를 알았다면

GraphicsSmoothing turned On (default)

는, 내가 대단히 감사하겠습니다.

업데이트 :이 솔루션을 grid on과 함께 사용하려고 시도했으며 배경 테두리가 주황색으로 바뀌 었습니다. 나는이 모든 문제에 대해 혼란 스럽다.