Matlab重用传说和格式

时间:2012-02-08 16:05:10

标签: matlab formatting automation figures

我有很多图表。 我需要对这些图表进行一些格式化。就像我需要更改标签,绘制几行然后放置图例,格式化字体大小和颜色等所有这些图形。这些图是.fig文件。

我没有图形数据点并且生成代码选项需要很长时间才能处理。这些图是散点图。

有没有办法可以在所有这些图表上使用相同的格式。喜欢打开所有的无花果,并通过编码做一些图形属性编辑?或创建一个格式,并可以在所有数字上申请? (像格式油漆一样)

由于

2 个答案:

答案 0 :(得分:1)

MATLAB数字是复杂的分层对象,因此制作通用的“格式画家”几乎是不可能的。

您可以将图形,轴,线等属性作为结构获取,但其中许多都是只读的。

如果你正在处理简单的数字 - 一个轴,相似类型的图,相同数量的数据系列,没有手动注释 - 可能更简单的方法是从一个数字获取数据并将它们应用到你想要的数字用作标准。

如果你的数字都是散射的,那么对象类型可以是直线(如果使用绘图),也可以是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