Plotgui
Purpose
Interactive data viewer.
Synopsis
- fig = plotgui(data)
- fig = plotgui(data,'PropertyName',PropertyValue,...)
- fig = plotgui('update','PropertyName',PropertyValue,...)
Description
Plots input data data and provides a control toolbar in the Plot Controls window to select portions of the data to view. The toolbar allows interactive selection, exclusion, and classing of rows or columns of data. The PLOTGUI command has various display options that are given as 'PropertyName', 'PropertyValue' pairs or as a single keyword. Properties and Keywords are discussed below.
Inputs
- data = input data, can be class "double" or "dataset". The description given below is generally listed for two-way data arrays.
- Notes: Options specific to data that are three-way or image are noted explicitly. PLOTGUI uses the dataset labels, classes, etc. when data is class "dataset".
- 'update' is used as a keyword input to modify options for an existing PLOTGUI figure without providing new data
Outputs
- fig = the handle of the figure in which the data is displayed
Plot Controls
The toolbar consists of
- 1) a menu bar with File, Edit, View, and Plot menus (see Plot Controls Window Menus )
- 2) a figure selection dropdown menu,
- 3) three axis menus (labeled x, y, and z),
- 4) plot update controls Plot button and auto-update checkbox, and Select button.
Each figure in the figure selection dropdown menu menu can be modified by the PLOTGUI controls. Selecting a figure from this menu will bring that figure into view and indicate the selected axis menu settings. A "+" or a "\*" next to a figure's name indicates that it is linked with another figure (see Duplicate Figure below).
The axis menus (labeled x, y, and z) select what parts of the data should be used for the plot. Each column or row selected in the y-axis menu will be plotted against the column, row or index selected in the x-axis menu. If any selection is made on the z-axis menu, then each y-axis selection is also plotted against the column or row selected in the z-axis menu to make a three-dimensional plot.
If the input data is three-way it is assumed to be a multivariate image, and the y-axis is slice or slab and the figure default is imagesc(dat(:,:,1)). This is also true if data is class "dataset" with the type field set to 'image' or 'image'.
If the auto-update checkbox is selected, figures are updated automatically when new axis-menu selections are made. Otherwise, the Plot button must be pressed before any changes are reflected in the figure.
The Select button allows the user to select plotted points in the current figure. After clicking Select, the current figure will be brought to the front and points are selected using the current selection tool (selected using the Tool button; see also Edit/Selection Mode menu). To extend a selection (i.e. add new points to the already selected points), use the shift-key while pressing the mouse button. To remove points from the selection, use the control-key while pressing the mouse button. To keep from making any selection, press "Esc" or "Escape".
Properties and Keywords
The following is a list of available properties. Each should be included as a 'PropertyName', 'PropertyValue' pair in an initial PLOTGUI call or a PLOTGUI 'update' call. Note that calls to PLOTGUI for PropertyName and PropertyValue are case insensitive.
The current value of almost all properties can be retrieved using the GETAPPDATA function on the PLOTGUI figure and requesting the property of interest. Note that calls to GETAPPDATA are case sensitive and PropertyName must be in all lower-case. The I/O format is:
- currentvalue = getappdata(fig,'propertyname')
where fig is the handle of the PLOTGUI figure. If 'propertyname' is not included getappdata(fig) will list all the properties and their current values. Properties and their possible values follow:
- AxisMenuValues: {[x] [y] [z]}, Two or three element cell containing indices or strings indicating which item, or items, to select in each of the three axis pull down menus. In [x] or [y] a value of 0 (zero) means to select index number. In [z] a value of 'none' means to not use the z-axis.
- AxisMenuDefaults: Axis menu defaults are axis menu values used if the axis menu values can not be restored. The input format is the same as axismenuvalues.
- Figure: [scalar integer], Figure on which data should be plotted {default is current figure}.
- New: Key word - no associated PropertyValue. Creates a new figure for display of data. This is equivalent to an initial PLOTGUI call.
- PlotBy: [scalar integer], Dimension (mode) for the axis menu selections: 0 = special "data browser", 1 = rows, 2 = columns, etc. (see View menu). The default is 2 or the number of modes in the data if larger than 2-way.
- VSIndex: [ 1 1] {default}, Two element vector indicating if "Index" should be offered on x and y axis menus. A 1 indicates that it should be offered as a selection and a 0 indicates that it should not e.g. [1 1] indicates that it should be offered for both the x-axis and y-axis.
Image Specific Properties
- Image: Key word - no associated PropertyValue. Unfolds a 2 or 3-way array and displays it as and image, allowing selection, classing, and exclusion of individual pixels.
- Unfold: Key word - no associated PropertyValue. Pseudonym for "image".
- AsImage: Key word - no associated PropertyValue. Display 3-way data that have already been unfolded as an image allowing selection, classing, and exclusion of individual pixels.
View Properties
- ViewClasses: [1] {default}, Turns on View/Classes menu. A 0 (zero) turns it off.
- ViewExcludedData: [1] {default}, Turns on View/Excluded Data menu. A 0 (zero) turns it off.
- ViewLabels: [1] {default}, Turns on View/Labels menu. A 0 (zero) turns it off.
- ViewNumbers: [1] {default}, Turns on View/Numbers menu. A 0 (zero) turns it off.
Plot Properties
- LineStyle: <string>, Defines line style (see PLOT).
- PlotType: <string>, String used to select plot type {default [ ] is atuomatic selection}. Other values are 'scatter', 'bar', 'none' ('none' = do no plotting).
- SelectionMarker: <string>, Defines marker style for selected points (see PLOT).
Selection Properties
- SelectionMode: <string>, Defines the selection mode. This can be any string listed under View/Selection Mode above. Also see GSELECT.
- BrushWidth: [scalar integer number of pixels], This defines the brush width for use when selectionmode = 'paintbrush'. See View/Selection Mode/Paintbrush.
- NoSelect: [0] {default}, When set to 0 this allows selections. When set to 1 no selection is allowed.
- NoInclud: [0] {default}, When set to 0 this allows changes to the inlclud field (i.e. it allows data to be excluded). When set to 1 no changes to the inlclud field are allowed (i.e. data can not be excluded).
Class Plotting Properties
- viewclassset: Specifies the class set (by integer number) to use when viewing classes.
- connectclasses: Governs plotting of class-encirciling ellipses. When "Yes" ellipses are drawn around each displayed class.
- classsymbol: Symbol to use when plotting classes. If not specified, all symbols are used in a rotating manner.
- classsymbolsize: Specifies the symbol size to use when plotting classes. If empty, the default symbol size is used.
- classfacecolor: Governs the use of symbol face color when viewing classes. If "No", each symbol is a single color. If "Yes", the face color of symbols will be rotated through the class colors independently from the symbol outline color.
- classcolormode: Specifies a standard colormap to use for class colors. Empty (the default) uses a standard "optimized" color map (recommended). "figure" uses the colormap set on the current figure. Any other setting is assumed to be a standard colormap name. If using "figure" you must update the plot (by clicking the "plot" button or issuing an 'update' command) after changing the figure colormap to have the change take effect.
- connectclassmethod: Specifies method used to outline classes (when connectclasses is "Yes") pca uses PCA confidence ellipses, outline draws a border around the outermost class members, connect connects all class members in series.
- connectclasslimit: Specifies confidence level at which classes should be outlined when using "PCA" class connect method.
- connectclassitems: List of classes to apply connect method on. If empty, all classes are used.
On-Event Properties
- CloseGUICallback: Command(s) to execute when the figure is closed.
- InfoReqCallback: Command executed when information on a selected point is requested.
- PlotCommand: Command executed after plotting (e.g. draw limits, assign ButtonDownFcns, modifiy axes, ...).
Confidence Limit Properties
- ConfLimits: Boolean flag to make "Conf. Limits" controls visible. 1 = show controls (PLOTGUI does nothing with these controls, thus the routine specified in '[plotcommand-]' must be set to use values).
- LimitsValue: Value for Conf. Limits editbox.
- ShowLimits: Value for "Conf. Limits" checkbox (1 = checked).
Figure Linking Properties
WARNING! Modifying these settings can lead to unexpected results!
- ControlBy: Reassign control for PLOTGUI figure.
- TimeStamp: Time-stamp of last time this figure was updated (can be set to any string to isolate figure from updating by parents).
Other Miscellaneous Properties
- UIControl: Add extra uicontrol(s) to PLOTGUI control toolbar for use with current figure (buttons, sliders, etc.). The value passed to UIControl should be a cell in which each entry is the tag of a new object to create and the value of that field should contain a cell of uicontrol property / value pairs to set for that object. For example:
- myobj.mybtn = {'style', 'pushbutton', 'string', 'new fig', 'callback', 'figure'};
- plotgui('update','uicontrol',myobj)
- creates a button with the tag 'mybtn' on the controls for the current figure.
- In addition to standard object properties, the special property 'updatecallback' can be set on an object. This callback will be executed whenever the Plot Controls window is updated. The variables targfig and h will be available to the callback to indicate the current "target figure" handle and the current object's handle, respectively. This property is useful for updating an object's enable or value properties when multiple figures share the same object (e.g. a checkbox which reflects some user-defined appdata). For an example of its use, see the plotscores function which uses this property for the "Show Error Bars" checkbox.
- If the cell for any object does not contain a 'position' property for the object, PLOTGUI will manage the object's position.
Read-Only Properties
These properties can only be viewed and are only accessible through the MATLAB getappdata command.
- Selection: Cell array of currently selected values. Usually the same format as "includ" field of DataSet object where each cell represents the index of selected items in each dimension {rows, columns, slabs, ...}.
- When selecting elements in greater than 2-dimensional data (and without the use of the 'image' keyword), two cells of this field will be pairs of selected indices: {x,y,[]} or {[],y,z}.
- FigureType: 'PlotGUI'
- DataSet: DataSet used in figure (or pointer to figure with actual dataset)
- Note: This is set by calling PLOTGUI with a new dataset as an input. The actual DataSet can be retrieved using the getdataset command (see below).
Other Valid Figure Properties
See the MATLAB documentation on FIGURE properties for additional information.
- HandleVisibility, MenuBar, Name, NumberTitle, Position, Resize, Tag, ToolBar, Units, UserData, Visible, WindowStyle
Examples
The following give some typical use examples:
- fig = plotgui(mydata)
plots mydata allowing user to select which column(s) of mydata to plot using pull-down menus. Figure number of plot is returned.
- plotgui(mydata,'plotby',1) or plotgui(mydata,'plotby','rows')
plots mydata as in first example except that rows of mydata (dimension 1) are used for pull-down menus instead of columns. Note: When a PLOTGUI property is set for a given figure, the new value will be retained until a new value for that property is provided, even if new data is plotted on the same PLOTGUI figure.
- fig = plotgui(mydata,'plotby',1,'axismenuvalues',{[1] [2 3]})
plots rows of mydata; sets controls with row 1 selected for the x-axis and rows 2 and 3 selected for the y-axis. Use:
- getappdata(fig,'axismenuvalues')
retrieves current axis menu settings. [axispulldown-]
- plotgui(mydata,'viewclasses',1)
plots mydata using symbols to identify the classes stored in dataset mydata. Use a value of 0 (zero) to turn off viewclasses.
- plotgui('update','viewclasses',1)
Turns on viewclasses property for current figure without having to pass data to plot (substitute string 'update' for data)
- mydata = plotgui('getdataset',fig)
Retrieves mydata from figure fig.
- plotgui(myimage,'image')
plots 3-way image myimage selecting slabs of the image for display. The keyword 'image' allows selection, classing and exclusion of pixels in the image.
See Also
analysis, boxplot, dataset, editds, gselect, modelviewer, mplot, ploteigen, plotloads, plotscores, trendtool