Matlab中图例和格式的重用

Matlab中图例和格式的重用,matlab,formatting,automation,figures,Matlab,Formatting,Automation,Figures,我有很多图表。 我需要对这些图表进行格式化。就像我需要改变标签,画几行,然后放置图例,格式化字体大小和颜色等所有这些图形。这些图是.fig文件 我没有图形数据点,生成代码选项需要很长时间来处理。这些图是散点图 有没有一种方法可以在所有这些图形上使用相同的格式。像打开所有的图和做一些数字属性编辑编码?或者创建一个格式,并可以应用于所有图形?(类似于格式绘画的东西) 感谢MATLAB图形是复杂的层次对象,因此几乎不可能制作通用的“格式画师” 可以将图形、轴、线等的属性作为结构获取,但其中许多属性是只

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

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

有没有一种方法可以在所有这些图形上使用相同的格式。像打开所有的图和做一些数字属性编辑编码?或者创建一个格式,并可以应用于所有图形?(类似于格式绘画的东西)


感谢

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

如果我理解正确,您应该能够一次打开一个图形,然后应用所需的格式。比如:

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