Prepare Figures and Axes for Graphs
Behavior of MATLAB Plotting Functions
MATLAB® plotting functions either create a new figure and axes if none exist, or reuse an existing figure and axes. When reusing existing axes, MATLAB
Clears the graphics objects from the axes.
Resets most axes properties to their default values.
Calculates new axes limits based on the new data.
When a plotting function creates a graph, the function can:
Create a figure and an axes for the graph and set necessary properties for the particular graph (default behavior if no current figure exists)
Reuse an existing figure and axes, clearing and resetting axes properties as required (default behavior if a graph exists)
Add new data objects to an existing graph without resetting properties (if
holdison)
The NextPlot figure and axes properties control
the way that MATLAB plotting functions behave.
How the NextPlot Properties Control Behavior
MATLAB plotting functions rely on the values of the figure
and axes NextPlot properties to determine whether
to add, clear, or clear and reset the figure and axes before drawing
the new graph. Low-level object-creation functions do not check the NextPlot properties.
They simply add the new graphics objects to the current figure and
axes.
This table summarizes the possible values for the NextPlot properties.
NextPlot | Figure | Axes |
|---|---|---|
| Creates a new figure and uses it as the current figure. | Not an option for axes. |
| Adds new graphics objects without clearing or resetting the current figure. (Default) | Adds new graphics objects without clearing or resetting the current axes. |
| Removes all axes objects whose handles are not hidden
before adding new objects. Does not reset figure properties. Equivalent
to | Removes all axes child objects whose handles are not
hidden before adding new graphics objects. Does not reset axes properties.
Equivalent to |
| Removes all axes objects and resets figure properties
to their defaults before adding new objects. Equivalent to | Removes all child objects and resets axes properties
to their defaults before adding new objects. Equivalent to |
Plotting functions call the newplot function
to obtain the handle to the appropriate axes.
The Default Scenario
Consider the default situation where the figure NextPlot property
is add and the axes NextPlot property
is replace. When you call newplot,
it:
Checks the value of the current figure's
NextPlotproperty (which is,add).Determines that MATLAB can draw into the current figure without modifying the figure. If there is no current figure,
newplotcreates one, but does not recheck itsNextPlotproperty.Checks the value of the current axes'
NextPlotproperty (which is,replace), deletes all graphics objects from the axes, resets all axes properties (exceptPositionandUnits) to their defaults, and returns the handle of the current axes. If there is no current axes,newplotcreates one, but does not recheck itsNextPlotproperty.Deletes all graphics objects from the axes, resets all axes properties (except
PositionandUnits) to their defaults, and returns the handle of the current axes. If there is no current axes,newplotcreates one, but does not recheck itsNextPlotproperty.
hold Function and NextPlot Properties
The hold function provides
convenient access to the NextPlot properties. When
you want add objects to a graph without removing other objects or
resetting properties use hold on:
hold on— Sets the figure and axesNextPlotproperties toadd. Line graphs continue to cycle through theColorOrderandLineStyleOrderproperty values.hold off— Sets the axesNextPlotproperty toreplace
Use the ishold to determine
if hold is on or off.
Control Behavior of User-Written Plotting Functions
MATLAB provides the newplot function
to simplify writing plotting functions that conform to the settings
of the NextPlot properties.
newplot checks the values of the NextPlot properties
and takes the appropriate action based on these values. Place newplot at
the beginning of any function that calls object creation functions.
When your function calls newplot, newplot first
queries the figure NextPlot property. Based on
the property values newplot then takes the action
described in the following table based on the property value.
| Figure NextPlot Property Value | newplot Function |
|---|---|
No figures exist | Creates a figure and makes this figure the current figure. |
| Makes the figure the current figure. |
| Creates a new figure and makes it the current figure. |
| Deletes the figure's children (axes objects and their descendants) and makes this figure the current figure. |
| Deletes the figure's children, resets the figure's properties to their defaults, and makes this figure the current figure. |
Then newplot checks the current axes' NextPlot property.
Based on the property value newplot takes the
action described in the following table.
| Axes NextPlot Property Value | newplot Function |
|---|---|
No axes in current figure | Creates an axes and makes it the current axes |
| Makes the axes the current axes and returns its handle. |
| Deletes the axes' children and makes this axes the current axes. |
| Deletes the axes' children, reset the axes' properties to their defaults, and makes this axes the current axes. |