【问题标题】:Get Number of plots on saved matlab figure automatically自动获取保存的matlab图形上的绘图数
【发布时间】:2013-10-12 12:17:55
【问题描述】:

假设我们有一个数字:

figure(1),plot(1:10);hold on;plot(2:2:45)

并保存此图。当我以 *.*fig 格式打开它时,我想从图(1)中获取信息,上面有多少图。图 1 上有 2 个图,但我想自动获得它。

【问题讨论】:

    标签: matlab plot graphic axes


    【解决方案1】:

    你可以使用类似的命令

    numplots =  numel(get(gca,'Children'))
    

    或者如果你正在寻找多少行:

    numlines = numel(findobj(gcf,'Type','line'))
    

    例如,执行此操作的函数可能是:

    function NumSons = sons_of_figure
    [filename,pathname]=uigetfile('*.fig','Select File to Open');
            if isequal(filename,0) || isequal(pathname,0)
                return
            else
                open(fullfile(pathname,filename));
                NumSons = numel(get(gca,'Children'));
            end
    end
    

    要更改线条的颜色,您需要知道(或找到)它的句柄。在您的示例中,您可以在每一行关联一个名称:

    figure(1),plot(1:10,'DisplayName','one');hold on;plot(2:2:45,'DisplayName','two')
    

    然后保存并加载图形。如果您想将名为“one”的第一行的颜色更改为红色:

    line1 = findobj(gcf,'DisplayName','one')%line1 is the handle to the line you want
    set(line1,'color','r')
    

    【讨论】:

    • 谢谢,所以我想问下一步:我怎样才能指出这些行之一。 ETC;我的图形上有 3 条线,我想更改其中一条线的颜色。我该如何编写我的“set(...)”命令
    • 你需要找到你的线的handle,然后你可以改变颜色。现在我要更新代码给你一些例子
    • 感谢您的有用建议。此外,是否有可能随机数字。有什么方法可以将你的风格应用到所有人物上
    • 如果您要修改的对象具有特定的属性值(例如它是一个线对象,或者它的颜色是蓝色而不是黄色),您可以使用上面使用的 findobj 函数获取它的句柄。我说你需要一个过滤器来获取你想要的绘图对象,否则你可以得到所有线条对象的句柄,然后尝试看看哪个是你要找的对象
    • 我想,我会这样处理:1)我得到了图上的行数,2)我尝试改变一些小的变化并控制我想要的。非常感谢
    猜你喜欢
    • 2011-08-14
    • 2011-06-15
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 2014-11-03
    • 2020-04-27
    • 1970-01-01
    • 2021-11-27
    相关资源
    最近更新 更多