# Graphics and GUIs with MATLAB

By P A T R I C K M A R C H A N D and O . T H O M A S H O L L A N D

### Contents of Graphics and GUIs with MATLAB

1 INTRODUCTION
1.1 OVERVIEW
1.2 ORGANIZATION OF THIS BOOK
1.3 TERMINOLOGY AND THE MATLAB PROGRAMMING LANGUAGE
1.3.1 Getting Started
1.3.2 Getting Help
1.4 OTHER REFERENCES
2 VISUALIZATION CONSIDERATIONS
2.1 WHY VISUALIZE?
2.2 CHARACTERISTICS OF GOOD DATA VISUALIZATION
2.3 DATA QUANTITY AND DIMENSION
2.5 MOTION
2.6 INTERACTION
3 PLOTTING IN TWO DIMENSIONS
3.1 SOURCES OF DATA
3.1.1 Function Data
3.1.2 Measured Data
3.2 IMPORTING DATA
3.2.1 MATLAB Data Formats
3.2.2 Importing High-Level Data
3.2.3 Importing Low-Level Data
3.3 ELEMENTARY 2-D PLOTS
3.3.1 A General Overview of the Plot Command
3.3.2 Logarithmic Plots
3.4 SIMPLE 2-D PLOT MANIPULATION
3.4.1 Generating Plots with Multiple Data Sets
3.4.2 Using Axis to Customize Plots
3.4.3 Creating Supporting Text and Legends
3.4.4 Text Placement
3.4.5 Special Text Character Formats
3.4.6 Using Subplot to Create Multiple Axes
3.5 SPECIALIZED 2-D PLOTTING
3.5.1 Bar Graphs
3.5.2 Histograms
3.5.3 Stairstep Graphs
3.5.4 Stem Plots
3.5.5 Plots with Error Bars
3.5.6 Pie Charts
3.5.7 Area Plots
3.5.8 Working with Complex Data
3.5.9 Using the Polar Coordinate System
3.5.10 Plotting Functions with MATLAB
3.5.11 Creating Filled Plots and Shapes
3.6 PLOT EDITING IN THE MATLAB FIGURE WINDOW
3.6.1 Plot Editing Mode
3.6.2 The Property Editor
3.6.3 Zooming and Rotating
3.6.4 Exporting, Copying, and Pasting
3.7 ILLUSTRATIVE PROBLEMS
4 PLOTTING IN THREE DIMENSIONS
4.1 ELEMENTARY 3-D PLOTTING
4.1.1 Using Plot3
4.1.2 Creating 3-D Meshes and Surfaces
4.1.3 Waterfall Plots
4.1.4 3-D Plots of Non-Uniformly Sampled Data
4.1.6 Removing Hidden Lines
4.1.7 Contour Plots
4.1.8 Quiver Plots
4.1.9 Combination Plots
4.1.10 3-D Stem Plots
4.1.11 Generating Surfaces with Triangles
4.1.12 Polygons in a 3-D Space
4.1.13 Built-In Surface Functions
4.2 SIMPLE 3-D PLOT MANIPULATION
4.2.1 The Camera Toolbar
4.2.2 Generalizing the Axis for 3 Dimensions
4.2.3 3-D Plot Rotation
4.2.4 Using the View Command
4.3 VOLUME VISUALIZATION
4.3.1 Scalar Volume Data
4.3.1.1 Slice Planes
4.3.1.2 Contour Slices
4.3.1.3 Isosurfaces and Isocaps
4.3.2 Vector Volume Data
4.3.2.1 Stream Plots
4.3.2.2 Stream Lines
4.3.2.3 Stream Particles
4.3.2.4 Stream Ribbons
4.3.2.5 Stream Tubes
4.3.2.6 Cone Plots
4.4 A WORD ABOUT ANNOTATING 3-D PLOTS
4.5 ILLUSTRATIVE PROBLEMS
5 IMAGE GRAPHICS
5.1 IMAGE FILES AND FORMATS
5.1.1 Common Image File Types
5.2 IMAGE I/O
5.2.2 Displaying a Graphics Image
5.2.3 Writing a Graphics Image
5.3 IMAGE TYPES AND PROPERTIES
5.3.1 Indexed Images
5.3.2 Intensity Level Images
5.3.3 Truecolor Images
6 GENERATING OUTPUT
6.1 THE QUICKEST WAY TO PAPER
6.1.1 Page Setup
6.2 PRINTING COLORED LINES TO BLACK & WHITE PRINTERS
6.3 ELECTRONIC OUTPUT
6.3.1 Using File Export
6.3.2 Using the Windows Clipboard
6.4 USING THE PRINT COMMAND
6.4.1 Creating Hardcopy with PRINT
6.4.2 Creating Graphics Files Using Print
6.4.4 Publishing Using 4-Color Separation
6.4.5 EPS with a Preview Image
6.4.6 Rendering Method with -zbuffer or -painters
6.4.7 Indicating Which Figure Window to Print
6.4.8 Saving Figures for Future Use
7 HANDLE GRAPHICS
7.1 GRAPHICS OBJECTS
7.2 GRAPHICS OBJECTS HIERARCHY
7.3 GRAPHICS OBJECTS HANDLES
7.3.1 Determining Handles at Creation
7.3.2 Getting Handles of Current Objects
7.4 PROPERTIES
7.4.1 The Property Editor
7.4.2 Manipulating Properties
7.4.3 Universal Object Properties
7.4.3.1 ButtonDownFcn, BusyAction, and Interruptible
7.4.3.2 Children and Parent
7.4.3.3 Clipping
7.4.3.4 CreateFCN and DeleteFCN
7.4.3.5 HandleVisibility
7.4.3.6 HitTest
7.4.3.7 Selected and SelectionHighlight
7.4.3.8 Tag and Type
7.4.3.9 UserData
7.4.3.10 Visible
7.5 OBJECT SPECIFIC PROPERTIES
7.5.1 Root Properties
7.5.1.1 Display Related Root Properties
7.5.1.2 Root Properties Related to the State of MATLAB
7.5.1.3 Behavior Related Properties of the Root
7.5.2 Figure Properties
7.5.2.1 Figure Properties Affecting Position
7.5.2.2 Style and Appearance Properties of the Figure Object
7.5.2.3 Figure Properties that Control the Colormap
7.5.2.4 Figure Properties that Affect Transparency
7.5.2.5 Properties that Affect How Figures are Rendered
7.5.2.6 Properties Related to the Current State of a Figure
7.5.2.7 Figure Properties that Affect the Pointer
7.5.2.8 Figure Properties that Affect Callback Execution
7.5.2.10 Figure Properties that Affect Printing
7.5.3 Axes Properties
7.5.3.1 Axes Properties Controlling Boxes and Tick Marks
7.5.3.2 Properties Affecting Axes Character Formats
7.5.3.3 Axes Properties Determining Axis Location and Position
7.5.3.4 Axes Properties Affecting Grids, Lines, and Color
7.5.3.5 Properties Affecting Axis Limits
7.5.3.6 Axes Properties Related to Viewing Perspective
7.5.4 Line Properties
7.5.5 Rectangle Properties
7.5.6 Patch Properties
7.5.6.1 Properties Defining Patch Objects
7.5.6.2 Properties Specifying Lines, Color, and Markers
7.5.6.3 Properties Affecting Lighting and Transparency
7.5.7 Surface Properties
7.5.8 Image Properties
7.5.9 Text Properties
7.6 SETTING DEFAULT PROPERTIES
7.7 UNDOCUMENTED PROPERTIES
7.8 USING FINDOBJ
7.9 ILLUSTRATIVE PROBLEMS
8 USING COLOR, LIGHT, AND TRANSPARENCY
8.1 SIMPLE COLOR SPECIFICATIONS
8.2 COLOR MAPS
8.2.1 Effects of Color Maps in General
8.2.2 Color Axis Control
8.2.2.1 Color Control with Direct Mapping
8.2.2.2 Color Control with Scaled Mapping
8.2.3 Color Maps as they Relate to Graphics Objects
8.2.3.1 Color Maps and the Surface Object
8.2.3.2 Patch Objects and the Color Map
8.2.3.3 Images and the Color Map
8.2.5 Brightening and Darkening Color Maps
8.2.6 Spinning the Color Map
8.2.7 Making Use of the Invisible Color with NaN
8.2.8 Creating Simple Color Bars
8.2.9 The Pseudocolor Plot
8.2.10 Texture Mapping
8.3 MODELING OBJECT LIGHTING
8.3.1 Light Properties
8.3.2 Functions that Make Use of Light
8.3.2.1 Lighting Commands
8.3.3 Lighting Models
8.3.3.1 The Diffuse Lighting Model
8.3.3.2 The Ambient Lighting Model
8.3.3.3 The Specular Lighting Model
8.3.3.4 Combining Lighting Models
8.3.3.5 A Final Word on Light Objects
8.3.4 Creating Color Varying Lines with Surface Objects
8.4 OBJECT TRANSPARENCY
8.4.1 Alpha Properties
8.4.1.2 Alphamap
8.4.1.3 ALim
8.4.1.4 ALimMode
8.4.1.6 FaceAlpha
8.4.1.7 EdgeAlpha
8.4.2 Alpha Functions
8.4.2.1 alpha
8.4.2.2 alphamap
8.4.2.3 alim
8.4.3 Setting a Single Transparency Value
8.4.4 Mapping Data to Transparency
8.5 ILLUSTRATIVE PROBLEMS
9 ANIMATION
9.1 FRAME-BY-FRAME CAPTURE AND PLAYBACK
9.1.1 Taking a Snapshot
9.1.2 Playing a Movie
9.1.3 Preallocating Memory
9.1.4 Practically Speaking
9.1.4.1 Recording the Entire Figure
9.1.4.2 Animating a Portion of the Figure
9.1.5 Making an AVI Movie
9.2 ON-THE-FLY GRAPHICS OBJECT MANIPULATION
9.2.1 Simple Animation Functions
9.2.2 The Wrong and Right Way to Animate Graphics
9.2.3 The Need for Speed
9.2.4 Animating Lines
9.2.5 Animated Rotations
9.2.6 Forcing a Graphic to Leave a Trail
9.3 CHOOSING THE RIGHT TECHNIQUE
10 ELEMENTS OF GUI DESIGN
10.1 WHAT IS A MATLAB GRAPHICAL USER INTERFACE?
10.2 THE THREE PHASES OF INTERFACE DESIGN
10.2.1 Analysis
10.2.2 Design
10.2.2.1 User Considerations
10.2.2.2 The Reason for the GUI
10.2.2.3 Cognitive Considerations
10.2.2.4 Physical Considerations
10.2.3 Paper Prototyping
10.2.3.1 Appearance
10.2.4 Construction
10.3 UI CONTROL ELEMENTS
10.3.1 The Styles
10.3.1.1 Check Boxes
10.3.1.2 Editable Text
10.3.1.3 Frames
10.3.1.5 List Boxes
10.3.1.6 Push Buttons
10.3.1.7 Toggle Buttons
10.3.1.9 Sliders
10.3.1.10 Static Text
10.3.2 UI Control Properties
10.3.2.1 Uicontrol BackgroundColor
10.3.2.2 Uicontrol ButtonDownFcn
10.3.2.3 Uicontrol CData
10.3.2.4 Uicontrol CallBack
10.3.2.5 Uicontrol Enable
10.3.2.6 Uicontrol Extent
10.3.2.7 Uicontrol ForegroundColor
10.3.2.8 Uicontrol Font Angle, Name, Size, Units, and Weight
10.3.2.9 Uicontrol HorizontalAlignment
10.3.2.10 Uicontrol Min, Max, and Value
10.3.2.11 Uicontrol SliderStep
10.3.2.12 Uicontrol TooltipString
10.3.2.13 Uicontrol Position
10.3.2.14 Uicontrol String
10.3.2.15 Style
10.3.2.16 ListBoxTop
10.3.2.17 Uicontrol Units
10.3.2.18 Uicontrol Interruptible
10.3.2.19 Uicontrol Tag
10.3.2.20 Uicontrol UserData
10.3.2.21 Uicontrol Visible
10.3.2.22 Other UI Control Properties
10.3.3 Creating Uicontrol Objects
10.3.3.1 Uicontrol Object Layering
10.3.3.2 Framing Objects
10.3.3.3 A Stretchable GUI
10.3.3.4 Predefined GUIs and Dialog Boxes
10.4.2.3 Summary
10.5 LOW-LEVEL MATLAB GUI PROGRAMMING TECHNIQUES
10.5.1 Strings of MATLAB Statements and Expressions
10.5.2 Programming Approaches in MATLAB
10.5.2.1 Creating All Graphics Elements in the Base Workspace
10.5.2.2 Storing Handles as Global Variables
10.5.2.3 Storing Handles in the UserData Properties
10.5.2.4 Utilizing Tags and the FINDOBJ Command
10.6 HIGH-LEVEL GUI DEVELOPMENT – GUIDE
10.6.1 The Layout Editor
10.6.2 The Property Inspector
10.6.3 The Object Browser
10.6.5 Saving the GUI
10.6.5.1 The GUIDE Created FIG-File
10.6.5.2 The GUIDE Created M-File
10.6.6 Executing a GUI
10.6.7 Editing a Previously Created GUI
10.7 COMMON PROGRAMMING DESIRES WITH UI OBJECTS
10.7.2 Linking Sliders and Editable Text Objects
10.7.3 Editable Text and Pop-Up Menu
10.7.4 Windowed Frame and Interruptions
10.7.6 Customizing a Button with Graphics
10.8 THE MATLAB EVENT QUEUE
10.8.1 Event Scheduling and Execution
10.8.2 Execution Order of Events
10.8.2.1 Mouse Button Pressed Down
10.8.2.2 Mouse Button Released
10.8.2.3 Mouse Pointer Moved
10.8.3 Interruptible vs. Uninterruptible
10.8.4 Common Mouse Action Examples
10.8.4.1 Moving Objects with the Mouse
10.8.4.2 Dynamic Boxes Using the RBBOX Function
10.9 CREATING CUSTOM USER INTERFACE COMPONENTS
10.9.1 Simulating Buttons with Image Objects
10.9.2 Creating a Dial
APPENDIX : QUICK REFERENCES