2012-02-08 5 views
2

私はいくつかのグラフを持っています。 私はこれらのグラフにいくつかの書式設定を行う必要があります。私はラベルを変更する必要がありますように、いくつかの線を描画し、伝説を配置し、フォントサイズと色などのすべてのグラフを書式設定します。これらのグラフは.figファイルです。Matlab再利用の伝説と書式設定

グラフのデータポイントがなく、コード生成オプションが処理に非常に時間がかかります。プロットは散布図です。

これらのグラフ全体で同じ書式設定を使用できる方法はありますか。すべてのイチジクを開け、コーディングでいくつかのフィギュアプロパティ編集をするのと同じように?または書式を作成し、それをすべての図形に適用できますか? (フォーマットペイントのようなsmthing)

おかげで

答えて

1

MATLABの数値は、複雑な階層オブジェクトであるので、ユニバーサル「形式の画家」を作ることはほとんど不可能であろう。

figure、axes、lineなどのプロパティは構造体として取得できますが、多くは読み込み専用です。

1軸、同様の種類のプロット、同じ数のデータシリーズ、手動注釈がない場合は、おそらく簡単な方法で1つの図からデータを取得し、必要な図形に適用します標準として使用する

図形がすべて散らばっている場合、オブジェクトの種類は線(plotを使用する場合)または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

私が正しく理解していれば、一度に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