Python相当于MATLAB findobj()

时间:2018-05-30 12:21:50

标签: python matlab

我正在尝试将MATLAB代码转换为Python,并且有两行具体可以解决我的问题。

h = findobj('Type', 'Figure');
cur_fig = get(0, 'CurrentFigure');

如何将其转换为python?我尝试使用plt.figure()plt.gcf(),但稍后在脚本中,我需要h作为列表来使用MATLAB中的set函数。

为了更好地了解我在做什么,总的MATLAB代码如下。

h = findobj('Type','figure');
cur_fig = get(0,'CurrentFigure');
warning off
for i = 1:length(h)
    set(0,'CurrentFigure',h(i));
    cur_ax = get(h(i),'CurrentAxes'); % gets current axis handle for given             figure
    hidn_axis=axes('Position',[0 0 1 1], 'Visible','off','Units','normalized','Tag','Stampit');
    dh(i,1) = text(.905,0.01,plotID);
    set(dh(i,1),'FontSize',[12],'HorizontalAlignment','Right');

    set(h(i),'CurrentAxes',cur_ax); % Sets current axis back to its previous state

    end                                          
end

set(0,'CurrentFigure',cur_fig);
pause(.001)
warning on

return;

必要的代码如下:

h = findobj('Type','figure');
cur_fig = get(0,'CurrentFigure');
for i = 1:length(h)
    set(0,'CurrentFigure',h(i));
    cur_ax = get(h(i),'CurrentAxes'); % gets current axis handle for given figure

我尝试执行以下操作:

h = plt.figure()
cur_fig = plt.gcf()
for i = range(1,len(h)+1):
    plt.set(0,'CurrentFigure',h[i]);

但是,我收到一条错误消息,说

  

TypeError:类型对象'图'没有len()

1 个答案:

答案 0 :(得分:0)

对于任何想知道的人,我发现这样做的最好方法是使用enumerate,如下所示:

for i, figure in enumerate(figures):
    figure.savefig('figure%d.png' % i)