⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fm_plot.m

📁 这是一个很适合研究和学习用的电力系统仿真软件
💻 M
📖 第 1 页 / 共 2 页
字号:
    nomefile = fm_filenum('eps');
    print(Fig.plot,'-depsc',[Path.data,nomefile])
    set(hdlfig,'Position',axs_pos);
    set(hdlfig2,'Position',ax2_pos);
    set(Fig.plot,'Position',fig_pos)
    set(Fig.plot,'PaperPosition',pap_pos)
    if Settings.hostver > 5.3,
      set(Fig.plot,'PaperSize',pap_siz)
    end
    set(Hdl_all,'Visible','on');
    if leg_value
      set(Hdl.legend,'Position',pos_leg);
    end
   case 'PushMeta'
    print(Fig.plot,'-dmeta')
    set(hdlfig,'Position',axs_pos);
    set(hdlfig2,'Position',ax2_pos);
    set(Fig.plot,'Position',fig_pos)
    set(Fig.plot,'PaperPosition',pap_pos)
    if Settings.hostver > 5.3,
      set(Fig.plot,'PaperSize',pap_siz)
    end
    set(Hdl_all,'Visible','on');
    if leg_value
      set(Hdl.legend,'Position',pos_leg);
    end
   case 'PushFig'
    figplot = Fig.plot;
    Fig.plot = 0;
    set(figplot, ...
        'Position',[0.2265 0.2265 0.5469 0.5469], ...
        'Menubar','figure', ...
        'Name','', ...
        'NumberTitle','on', ...
        'CreateFcn','', ...
        'DeleteFcn','', ...
        'UserData',[], ...
        'FileName','')
    set(Hdl.axesplot,'Color',[1 1 1])
    if leg_value
      set(Hdl.legend,'Color',[1 1 1])
    end
    delete(Hdl_all)
    delete(hdlfig2)
    fm_plotfig
    figure(figplot)
  end
  if ~isempty(lastwarn) & ~strcmp(lastwarn,'File not found or permission denied')
    fm_disp(lastwarn,2),
  end
  warning on

 case 'plottypes'

  tipoplot = get(Hdl_tipoplot,'Value');
  switch tipoplot
   case 1,
    set(Fig.plot, ...
        'DefaultAxesColorOrder',Settings.color, ...
        'DefaultAxesLineStyle','-');
   case 2,
    set(Fig.plot, ...
        'DefaultAxesColorOrder',[ 0 0 0 ], ...
        'DefaultAxesLineStyleOrder','-|-.|--|:');
   case 3,
    set(Fig.plot, ...
        'DefaultAxesColorOrder',[ 0 0 0 ], ...
        'DefaultAxesLineStyle','-');
   case 4,
    set(Fig.plot, ...
        'DefaultAxesColorOrder',[ 0 0 0 ], ...
        'DefaultAxesLineStyle','-');
   otherwise,
    set(Fig.plot, ...
        'DefaultAxesColorOrder',Settings.color, ...
        'DefaultAxesLineStyle','-');
  end
  fm_plot('plotvars')

 case 'editvarname'

  value =  get(Hdl_listplot,'Value');
  if ~isempty(get(Hdl_listplot,'String'))
    valori = get(Hdl_listvar,'Value');
    val = valori(Varname.po(value));
    stringa = get(Fig.plot,'UserData');
    nomeattuale = popupstr(Hdl_listplot);
    idx = findstr(nomeattuale,']');
    nomeattuale = nomeattuale(idx+2:end);
    nomenuovo = fm_input('Input Formatted Text:', ...
                         'Legend Name',1,{stringa{val}});
    if isempty(nomenuovo),
      return,
    end
    Varname.changes(val) = 1;
    stringa{val} = nomenuovo{1};
    set(Fig.plot,'UserData',stringa);
    fm_disp(['Formatted text of variable "', ...
             nomeattuale,'" has been changed in "', ...
             nomenuovo{1},'"'])
  else
    fm_disp('No variable selected')
  end

 case 'motion'

  if Settings.zoom
    xy = get(Fig.plot,'CurrentPoint');
    if xy(1) > 0.0616 & xy(1) < 0.5644 & xy(2) > 0.4190 & xy(2) < 0.9098
      set(Fig.plot,'Pointer','crosshair');
      eval(Settings.zoom)
    elseif xy(1) > 0.0638 & xy(1) < 0.2329 & xy(2) > 0.0663 & xy(2) < 0.2265
      set(Fig.plot,'Pointer','arrow');
      zoom off
    else
      set(Fig.plot,'Pointer','arrow');
      eval(Settings.zoom)
    end
    set(Fig.plot,'WindowButtonMotionFcn','fm_plot motion');
    refreshfcn
    return
  end

 case 'zoomy'

  zoom yon
  set(Fig.plot,'WindowButtonMotionFcn','fm_plot motion');
  set(hdl_zoom1,'Value',0);
  set(hdl_zoom2,'Value',0);
  if get(hdl_zoom3,'Value')
    Settings.zoom = 'zoom yon';
  else
    Settings.zoom = '';
    zoom off
  end

 case 'axesy'

  if get(hdl_x,'Value')
    set(hdl_x,'Value',0)
    delete(findobj(allchild(hdlfig),'UserData','x axis'))
  end
  if get(hdl_xy,'Value')
    set(hdl_xy,'Value',0)
    delete(findobj(allchild(hdlfig),'UserData','x axis'))
    delete(findobj(allchild(hdlfig),'UserData','y axis'))
  end

  value = get(gcbo,'Value');
  if value
    ylim = get(hdlfig,'YLim');
    hold on
    h = plot([0 0],[ylim(1), ylim(2)],'k:');
    set(h,'UserData','y axis')
    hold off
  else
    hdl_child = allchild(hdlfig);
    delete(findobj(hdl_child,'UserData','y axis'))
  end
  if Fig.line, fm_plot('createlinelist'), end

 case 'axescolor'

  currentColor = get(hdlfig,'Color');
  c = uisetcolor(currentColor);
  if ~isequal(c,currentColor) set(hdlfig,'Color',c);
    hdl_line = findobj(allchild(hdlfig),'Type','line');
    set(hdl_line,'MarkerFaceColor',c)
    hlegend = findobj(Fig.plot,'Tag','legend');
    set(hlegend,'Color',c)
  end

 case 'axesx'

  if get(hdl_y,'Value')
   set(hdl_y,'Value',0)
   delete(findobj(allchild(hdlfig),'UserData','y axis'))
  end
  if get(hdl_xy,'Value')
    set(hdl_xy,'Value',0)
    delete(findobj(allchild(hdlfig),'UserData','y axis'))
    delete(findobj(allchild(hdlfig),'UserData','x axis'))
  end

  value = get(gcbo,'Value');
  if value
    xlim = get(hdlfig,'XLim');
    hold on
    h = plot([xlim(1), xlim(2)], [0, 0],'k:');
    set(h,'UserData','x axis')
    hold off
  else
    hdl_child = allchild(hdlfig);
    delete(findobj(hdl_child,'UserData','x axis'))
  end
  if Fig.line, fm_plot('createlinelist'), end

 case 'axesxy'

  if get(hdl_x,'Value')
    set(hdl_x,'Value',0)
    delete(findobj(allchild(hdlfig),'UserData','x axis'))
  end
  if get(hdl_y,'Value')
    set(hdl_y,'Value',0)
    delete(findobj(allchild(hdlfig),'UserData','y axis'))
  end

  value = get(gcbo,'Value');
  if value
    xlim = get(hdlfig,'XLim');
    ylim = get(hdlfig,'YLim');
    hold on
    h = plot([xlim(1), xlim(2)], [0, 0],'k:');
    set(h,'UserData','x axis')
    h = plot([0, 0],[ylim(1), ylim(2)],'k:');
    set(h,'UserData','y axis')
    hold off
  else
    hdl_child = allchild(hdlfig);
    try, delete(findobj(hdl_child,'UserData','x axis')), end
    try, delete(findobj(hdl_child,'UserData','y axis')), end
  end
  if Fig.line, fm_plot('createlinelist'), end

 case 'zoomx'

  zoom xon
  set(Fig.plot,'WindowButtonMotionFcn','fm_plot motion');
  set(hdl_zoom1,'Value',0);
  set(hdl_zoom3,'Value',0);
  if get(hdl_zoom2,'Value')
    Settings.zoom = 'zoom xon';
  else
    Settings.zoom = '';
    zoom off
  end

 case 'zoomxy'

  zoom on
  set(Fig.plot,'WindowButtonMotionFcn','fm_plot motion');
  set(hdl_zoom2,'Value',0);
  set(hdl_zoom3,'Value',0);
  if get(hdl_zoom1,'Value')
    Settings.zoom = 'zoom on';
  else
    Settings.zoom = '';
    zoom off
  end

 case 'moveup'

  value = get(Hdl_listplot,'Value');
  NameString = get(Hdl_listplot,'String');
  Value = 1:length(NameString);

  if value > 1
    dummy = Varname.po(value);
    Varname.po(value) = Varname.po(value-1);
    Varname.po(value-1) = dummy;
    dummy = Value(value);
    Value(value) = Value(value-1);
    Value(value-1) = dummy;
    set(Hdl_listplot, ...
        'String',NameString(Value), ...
        'Value',value-1);
  end

 case 'movedown'

  value = get(Hdl_listplot,'Value');
  NameString = get(Hdl_listplot,'String');
  Value = 1:length(NameString);

  if value < length(Varname.po) & ~isempty(NameString)
    dummy = Varname.po(value);
    Varname.po(value) = Varname.po(value+1);
    Varname.po(value+1) = dummy;
    dummy = Value(value);
    Value(value) = Value(value+1);
    Value(value+1) = dummy;
    set(Hdl_listplot, ...
        'String',NameString(Value), ...
        'Value',value+1);
  end

 case 'togglegrid'

  if get(gcbo,'Value'),
    grid on,
  else,
    grid off,
  end

 case 'togglelegend'

  if Settings.hostver >= 7
    legend(Hdl.axesplot,'toggle')
  else
    onoff = {'off','on'};
    if strcmp(get(gcbo,'Tag'),'PushLegend')
      set(Hdl_legend,'Value',~get(Hdl_legend,'Value'))
      set(gcbo,'Checked',onoff{get(Hdl_legend,'Value')+1})
      value = get(Hdl_legend,'Value');
    else
      hdl = findobj(Fig.plot,'Tag','PushLegend');
      set(hdl,'Checked',onoff{get(gcbo,'Value')+1})
      value = get(gcbo,'Value');
    end

    if value
      fm_plot('plotvars')
    else
      legend off
    end
  end

 case 'listvars'

  Value = get(Hdl_listvar,'Value');
  if isempty(Value), return, end
  NameString = get(Hdl_listvar,'String');
  if isempty(NameString), return, end
  set(Hdl_listplot,'String',NameString(Value));
  set(Hdl_listplot,'Value',1);
  Varname.po = 1:length(Value);
  if strcmp(get(Fig.plot,'SelectionType'),'open'),
    fm_plot('plotvars')
  end

 case 'listlines'

  hdl = findobj(Fig.line,'Tag','Listbox1');
  Value = get(hdl,'Value');
  hdl_line = get(Fig.line,'UserData');
  hdl_line = hdl_line(end:-1:1);
  n_var = length(get(Hdl_listplot,'String'));
  fm_linedlg(hdl_line(Value))

 case 'createlinelist'

  hdl_line = findobj(allchild(hdlfig),'Type','line');
  variabili = get(Hdl_listplot,'String');
  set(Fig.line,'UserData',hdl_line);
  hdl_list = findobj(Fig.line,'Tag','Listbox1');
  line_string = cell(length(hdl_line),1);
  hdl_line = hdl_line(end:-1:1);
  for i = 1:length(hdl_line)
    if strcmp(get(hdl_line(i),'UserData'),'x axis')
      line_string{i,1} = ['x axis ',fvar(i,4)];
    elseif strcmp(get(hdl_line(i),'UserData'),'y axis')
      line_string{i,1} = ['y axis ',fvar(i,4)];
    elseif i <= length(variabili)
      line_string{i,1} = ['line   ',fvar(i,4),variabili{i}];
    else
      line_string{i,1} = ['symbol ',fvar(i,4), ...
                          variabili{i-length(variabili)}];
    end
  end
  set(hdl_list,'String',line_string,'Value',1);

 case 'axesprops'

  fm_axesdlg(hdlfig)

 case 'textprops'

  TextProp = uisetfont;
  if isstruct(TextProp)
    set(hdlfig,TextProp)
    set(get(hdlfig,'XLabel'),TextProp)
    set(get(hdlfig,'YLabel'),TextProp)
    set(get(hdlfig,'Title'),TextProp)
    if get(Hdl_legend,'Value')
      hlegend = findobj(Fig.plot,'Tag','legend');
      hchild = get(hlegend,'Child');
      set(hchild(end), ...
          'FontName',TextProp.FontName, ...
          'FontWeight', TextProp.FontWeight, ...
          'FontAngle',TextProp.FontAngle)
    end
  end

 case 'setxlabel'

  value = get(gcbo,'Value');
  set(gcbo,'Value',value(end))
  if strcmp(get(Fig.plot,'SelectionType'),'open')
    fm_plot('plotvars')
  end

 case 'setangles'

  idx = [];
  kdx = [];
  for i = 1:length(Varout.idx)
    kkk = Varout.idx(i);
    if kkk > DAE.n+2*Bus.n
      break
    elseif kkk <= DAE.n
      if ~isempty(find(Syn.delta == kkk))
        idx = [idx, kkk];
        kdx = [kdx, i];
      end
    elseif kkk > DAE.n+Bus.n & kkk <= DAE.n+2*Bus.n
        idx = [idx, kkk];
        kdx = [kdx, i];
    end
  end
  set(gcbo, ...
      'String',[{'None'}; Varname.uvars(idx)], ...
      'UserData',kdx)

end

if ~isempty(Settings.zoom)
  eval(Settings.zoom)
  set(Fig.plot,'WindowButtonMotionFcn','fm_plot motion');
end

refreshfcn

% ------------------------------------------------------------------------
% Enumeration of variables
% ------------------------------------------------------------------------

function stringa = enum(stringa)
for i = 1:length(stringa),
  stringa{i} = ['[',int2str(i),'] ',stringa{i}];
end

% ------------------------------------------------------------------------
% Refresh WindowButtonDownFcn and WindowButtonMotionFcn
% ------------------------------------------------------------------------

function refreshfcn

% This fixes what seems to be a bug of the "zoom" function
% that deletes WindowButtonDownFcn and WindowButtonMotionFcn
% callbacks of other open windows...

global Fig

if Fig.about,
  set(Fig.about,'WindowButtonDownFcn','fm_about aboutdown', ...
		'WindowButtonMotionFcn','fm_about aboutmove')
end

if Fig.author
  set(Fig.author,'WindowButtonDownFcn','close(gcf)')
end

if Fig.clock
  set(Fig.clock,'WindowButtonDownFcn', ...
		'set(Fig.clock,''Userdata'',-1)')
end

if Fig.comp
  set(Fig.comp,'WindowButtonDownFcn','fm_component cbdown', ...
	       'WindowButtonMotionFcn','fm_component cbmotion')
end

if Fig.main
  set(Fig.main,'WindowButtonDownFcn','fm_main buttondown', ...
	       'WindowButtonMotionFcn','fm_main buttonmotion')
end

if Fig.simset
  set(Fig.simset,'WindowButtonDownFcn','fm_simset buttondown', ...
		 'WindowButtonMotionFcn','fm_simset buttonmotion')
end

if Fig.update
  set(Fig.update,'WindowButtonDownFcn','fm_update author')
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -