2012-02-08 4 views
2

나는 많은 그래프를 가지고있다. 그래프를 통해 일부 서식을 지정해야합니다. 내가 레이블을 바꾸고, 몇 줄을 그린 다음 범례를 배치하고 글꼴 크기와 색상을 모든 그래프에 맞게 포맷해야합니다. 이 그래프는 .fig 파일입니다.Matlab 재사용 범례 및 서식

그래프 데이터 포인트가없고 코드 생성 옵션이 처리하는 데 오랜 시간이 걸립니다. 플롯은 분산 형 플롯입니다.

모든 그래프에서 동일한 서식을 사용할 수있는 방법이 있습니까? 모든 무화과를 열고 코딩으로 일부 그림 속성 편집을하는 것처럼? 서식을 만들고 모든 수치에 대해 서식을 적용 할 수 있습니까?

답변

1

MATLAB 수치는 복잡한 계층 적 객체

감사합니다 (형식 페인트처럼 smthing), 그래서 보편적 "서식 복사"를 만드는 것은 거의 불가능하다.

그림, 축, 선 등의 속성을 구조로 가져올 수 있지만 그 중 많은 부분이 읽기 전용입니다.

하나의 축, 비슷한 유형의 플롯, 동일한 수의 데이터 시리즈, 수동 주석이없는 경우 - 아마도 한 가지 그림에서 데이터를 가져와 원하는 그림에 적용하는 것이 더 쉬운 방법 일 것입니다 표준으로 사용합니다.

그림이 모두 산란하면 개체 유형은 선 (그림을 사용하는 경우) 또는 hggroup (산산조각을 사용하는 경우) 중 하나입니다. 그래서 그는 그것이 어떻게 행해질 수 있는지 보여주는 예입니다.

fstd = hgload('standard.fig'); %# load standard figure 
f1 = hgload('f1.fig'); %# load another figure 
%# find data series objects 
hstd = findobj(gcf,'type','line','-or','type','hggroup'); 
h1 = findobj(gcf,'type','line','-or','type','hggroup'); 
assert(numel(hstd)==numel(h1),'Figures have different number of data series') 
%# get the data coordinates from one figure and apply to another 
for k = 1:numel(hstd) 
    h1x = get(h1(k),'XData'); 
    h1y = get(h1(k),'YData'); 
    h1z = get(h1(k),'ZData'); 
    set(hstd(k),'XData',h1x); 
    set(hstd(k),'YData',h1y); 
    set(hstd(k),'ZData',h1z); 
end 
hgsave(hstd,'f1mod.fig') %# save the modified figure 
1

올바르게 이해하면 숫자를 한 번에 하나씩 열고 원하는 형식을 적용 할 수 있습니다. 다음과 같음 :

fileList = dir('*.fig') 
for ix = 1:length(fileList) 
    h = open(fileList(ix).name); 

    %Now operate on the figure with handle h 
    %e.g. 
    axis(h,[0 10 -3 3]); 
    legend(h,'Data1','Data2'); 
    hold on 
    plot(-10:10, x.^2,'k-'); 

    %Then get whatever output you want, e.g. save, print, etc. 
end