line source
+ − % 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