diff m-toolbox/classes/@plotter/plotter.m @ 0:f0afece42f48

Import.
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Wed, 23 Nov 2011 19:22:13 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/m-toolbox/classes/@plotter/plotter.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,284 @@
+% PLOTTER base class for different plotter objects.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% DESCRIPTION: PLOTTER base class for different plotter objects.
+%
+% This class defines the basic properties of a plot or series of plots.
+% Namely, the data and the properties of the figure(s), axes, lines, and
+% legends.
+%
+% The defaults for the various properties (except the data) are taken from
+% the LTPDA preferences.
+%
+% CONSTRUCTOR:
+%
+%            p = plotter(objects)
+%            p = plotter(objects, pl)
+%
+% <a href="matlab:utils.helper.displayMethodInfo('plotter', 'plotter')">Parameters Description</a>
+%
+% VERSION:     $Id: plotter.m,v 1.3 2011/04/08 08:56:26 hewitson Exp $
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+classdef plotter < ltpda_obj
+  
+  properties
+    
+    % Cell array of data objects to plot
+    data;
+    
+    % output
+    outputdir;
+    filename;
+    
+    % figure
+    
+    % axis properties
+    axisFontSize;
+    axisFontWeight;
+    axisFontName;
+    axisLineWidth;
+    labelFontSize;
+    
+    % Grid
+    gridLineStyle;
+    minorGridLineStyle;
+    showXGrid;
+    showXMinorGrid;
+    showYGrid;
+    showYMinorGrid;
+    
+    % line properties
+    lineStyle;
+    lineWidth;
+    marker;
+    markerSize;
+    plotinfoOverride;
+    
+    % Legend
+    legendFontSize;
+    includeLegend;
+    legendLocation;
+        
+    includeDescription;
+    
+    plotcolors;
+    
+  end
+  
+  
+  methods
+    
+    % Constructor
+    function p = plotter(varargin)
+      
+      % Collect all ltpda_uoh objects
+      objs = {};
+      for kk=1:nargin
+        if isa(varargin{kk}, 'ltpda_uoh')
+          objs = [objs varargin(kk)];
+        end
+      end
+      p.data = objs;
+      
+      % Process the input plist
+      pl = utils.helper.collect_objects(varargin(:), 'plist');
+      pl = combine(pl, plotter.getDefaultPlist('Default'));
+      
+      % Set properties from the plist      
+      plotter.setPropertiesFromPlist(p, pl);
+      
+    end % End of constructor
+    
+  end
+  
+  methods (Static=true, Access=private)
+    
+    % Set the object properties from the plist
+    function setPropertiesFromPlist(p, pl)
+      p.outputdir          = pl.find('output directory');
+      p.filename           = pl.find('filename');
+      p.axisFontSize       = pl.find('axis FontSize');
+      p.axisFontWeight     = pl.find('axis FontWeight');
+      p.axisFontName       = pl.find('axis fontname');
+      p.axisLineWidth      = pl.find('axis LineWidth');
+      p.gridLineStyle      = pl.find('grid LineStyle');
+      p.minorGridLineStyle = pl.find('minor Grid LineStyle');
+      p.legendFontSize     = pl.find('legend FontSize');
+      p.lineWidth          = pl.find('lineWidth');
+      p.lineStyle          = pl.find('linestyle');
+      p.markerSize         = pl.find('marker Size');
+      p.marker             = pl.find('marker');
+      p.includeDescription = pl.find('include Description');
+      p.includeLegend      = pl.find('include Legend');
+      p.plotinfoOverride   = pl.find('plotinfo override');
+      p.showXGrid          = pl.find('Show X Grid');
+      p.showXMinorGrid     = pl.find('Show X Minor Grid');
+      p.showYGrid          = pl.find('Show Y Grid');
+      p.showYMinorGrid     = pl.find('Show Y Minor Grid');
+      p.plotcolors         = pl.find('plot colors');
+      p.labelFontSize      = pl.find('label fontsize');
+      p.legendLocation     = pl.find('legend location');
+    end
+    
+  end
+  
+  methods (Static=true)
+    
+    function out = VEROUT()
+      out = '$Id: plotter.m,v 1.3 2011/04/08 08:56:26 hewitson Exp $';
+    end
+    
+    function ii = getInfo(varargin)
+      ii = utils.helper.generic_getInfo(varargin{:}, 'plotter');
+    end
+    
+    function out = SETS()
+      out = {'Default'};
+    end    
+    
+    function out = getDefaultPlist(set)
+      
+      if ~utils.helper.ismember(lower(smodel.SETS), lower(set))
+        error('### Unknown set [%s]', set);
+      end
+      
+      out = plist();
+      
+      % output directory
+      p = param({'output directory','A directory for use when plotting to files.'}, paramValue.EMPTY_STRING);
+      out.append(p);
+      
+      % output filename
+      p = param({'filename','A filename for use when plotting to files.'}, paramValue.EMPTY_STRING);
+      out.append(p);
+      
+      % axis font size
+      p = param({'axis FontSize','The font size for axis numbers.'}, LTPDAprefs.axesFontSize);
+      out.append(p);      
+      
+      % label font size
+      p = param({'label FontSize','The font size for axis labels.'}, LTPDAprefs.axesFontSize);
+      out.append(p);      
+      
+      % axis font name
+      p = param({'axis fontname','The font name for axis labels.'}, 'default');
+      out.append(p);      
+      
+      % axis font weight
+      default = LTPDAprefs.axesFontWeight;
+      defaultIndex = find(strcmpi(default, plotter.fontweights));
+      if isempty(defaultIndex)
+        defaultIndex = 1;
+      end
+      p = param({'axis FontWeight','The font weight for axis labels.'}, {defaultIndex, plotter.fontweights, paramValue.SINGLE});
+      out.append(p);
+      
+      % axis line width
+      p = param({'axis LineWidth','The line width for the axes.'}, LTPDAprefs.axesLineWidth);
+      out.append(p);      
+            
+      % grid style
+      default = LTPDAprefs.gridStyle;
+      defaultIndex = find(strcmpi(default, plotter.linestyles));
+      p = param({'grid LineStyle','The major grid line style.'}, {defaultIndex, plotter.linestyles, paramValue.SINGLE});
+      out.append(p);
+      
+      % minor grid style
+      default = LTPDAprefs.minorGridStyle;
+      defaultIndex = find(strcmpi(default, plotter.linestyles));
+      p = param({'minor Grid LineStyle','The minor grid line style.'}, {defaultIndex, plotter.linestyles, paramValue.SINGLE});
+      out.append(p);      
+
+      % legend font size
+      p = param({'legend FontSize','The font size for legends.'}, LTPDAprefs.legendFontSize);
+      out.append(p);      
+
+      % line width
+      p = param({'lineWidth','The width of data lines.'}, LTPDAprefs.lineLineWidth);
+      out.append(p);      
+      
+      % line style
+      p = param({'linestyle','The style of data lines.'}, {1, plotter.linestyles, paramValue.SINGLE});
+      out.append(p);      
+      
+      
+      % Include description
+      p = param({'include Description','Include object description in the legend.'}, paramValue.TRUE_FALSE);
+      out.append(p);      
+      
+      % Include legend
+      p = param({'include Legend','Include legend on the plot.'}, paramValue.TRUE_FALSE);
+      out.append(p);      
+      
+      % Legend locations
+      default = 'NorthWest';
+      defaultIndex = find(strcmpi(default, plotter.legendLocations));
+      p = param({'legend location','Include legend on the plot.'}, {defaultIndex, plotter.legendLocations, paramValue.SINGLE});
+      out.append(p);            
+            
+      % Allow plotinfo override
+      p = param({'plotinfo override','Allow plotinfo to override settings.'}, paramValue.TRUE_FALSE);
+      out.append(p);          
+      
+      % marker size
+      p = param({'marker Size','The size of markers.'}, LTPDAprefs.lineMarkerSize);
+      out.append(p);      
+      
+      % marker 
+      p = param({'marker','The default marker for traces.'}, {1, plotter.markers, paramValue.SINGLE});
+      out.append(p);      
+            
+      % Show X grid
+      p = param({'Show X Grid','Show the X major grid lines.'}, paramValue.TRUE_FALSE);
+      out.append(p);          
+      
+      % Show Y minor grid
+      p = param({'Show X Minor Grid','Show the X minor grid lines.'}, paramValue.TRUE_FALSE);
+      out.append(p);          
+      
+      % Show grid
+      p = param({'Show Y Grid','Show the Y major grid lines.'}, paramValue.TRUE_FALSE);
+      out.append(p);          
+      
+      % Show minor grid
+      p = param({'Show Y Minor Grid','Show the Y minor grid lines.'}, paramValue.TRUE_FALSE);
+      out.append(p);          
+      
+      % Plot colors
+      p = param({'plot colors', 'A cell-array of plot colors to cycle through for multi-trace plots'}, getappdata(0, 'ltpda_default_plot_colors'));
+      out.append(p);
+      
+    end % function out = getDefaultPlist(varargin)
+    
+    function obj = initObjectWithSize(n,m)
+      obj = smodel.newarray([n m]);
+      for ii = 1:numel(obj)
+        obj(ii).UUID = char(java.util.UUID.randomUUID);
+      end
+    end
+    
+    function out = linestyles()
+      out = {'-', '--', ':', '-.'};
+    end
+    
+    function out = fontweights
+      out = {'normal', 'bold', 'light', 'demi'};
+    end
+    
+    function out = markers
+      out = {'none', '+', 'o', '*', '.', 'x', 's', 'd', '^', 'v', '>', '<', 'p', 'h'};
+    end
+    
+    function out = legendLocations
+      out = {'North', 'South', 'East', 'West', 'NorthEast', 'NorthWest', 'SouthEast', ...
+        'SouthWest', 'NorthOutside', 'SouthOutside', 'EastOutside', 'WestOutside', ...
+        'NorthEastOutside', 'NorthWestOutside', 'SouthEastOutside', 'SouthWestOutside', ...
+        'Best', 'BestOutside'};
+    end
+    
+  end
+  
+  
+  
+end