This example shows how to create, display, and modify graphics objects in MATLAB®.
When MATLAB creates a plot, it creates a series of graphics objects. Figures, axes, lines, patches, and text are examples of graphics objects. The figure below has three graphics objects -- an axes, a line, and a text object. Use an optional output argument to store the graphics object that is created.
x = -pi:pi/20:pi; y = sin(x); f = figure; p = plot(x,y); txt1 = text(0.2,0,'sin(x)');
All graphics objects have properties that you can view and modify. These properties have default values. The display of the line object,
p, shows the most commonly used line properties, such as
p = Line with properties: Color: [0 0.4470 0.7410] LineStyle: '-' LineWidth: 0.5000 Marker: 'none' MarkerSize: 6 MarkerFaceColor: 'none' XData: [1x41 double] YData: [1x41 double] ZData: [1x0 double] Show all properties
MATLAB shows the same display if the semicolon is missing from the command that creates the object.
txt2 = text(x(end), y(end), 'pi')
txt2 = Text (pi) with properties: String: 'pi' FontSize: 10 FontWeight: 'normal' FontName: 'Helvetica' Color: [0 0 0] HorizontalAlignment: 'left' Position: [3.1416 1.2246e-16 0] Units: 'data' Show all properties
To access individual properties of a graphics object, use dot notation syntax
object.PropertyName. For example, return the
LineWidth property for the line object.
pcol = p.LineWidth
pcol = 0.5000
Change the line color to red by setting its
p.Color = 'red';
MATLAB arranges graphics objects in a hierarchy. The top of the hierarchy is a special object called the graphics root. To access the graphics root, use the
ans = Graphics Root with properties: CurrentFigure: [1x1 Figure] ScreenPixelsPerInch: 100 ScreenSize: [1 1 1280 1024] MonitorPositions: [1 1 1280 1024] Units: 'pixels' Show all properties
All graphics objects (except the root) have a parent. For example, the parent of an axes is a figure.
ax = gca; ax.Parent
ans = Figure (1) with properties: Number: 1 Name: '' Color: [0.9400 0.9400 0.9400] Position: [348 480 583 437] Units: 'pixels' Show all properties
Many objects also have children. This axes has three children - the two text objects and the line object.
ans = 3x1 graphics array: Text (pi) Text (sin(x)) Line
Since the axes has multiple children, the value of the
Children property is an array of graphics objects. To access an individual child of the axes, index into the array. You can then set properties of the child object.
t = ax.Children(2); % get the 'sin(x)' text object t.FontWeight = 'bold'; % set the font to bold
It is a best practice in MATLAB to preallocate an array before using it. Use the
gobjects command to preallocate an array of graphics objects. You can then add graphics objects to the array.
objarray = gobjects(1,5); objarray(1) = f; objarray(2) = ax; objarray(3) = p; objarray(4) = txt1; objarray(5) = txt2; objarray
objarray = 1x5 graphics array: Figure Axes Line Text Text
Graphics objects in MATLAB have many properties. To see all the properties of an object, use the
Alphamap: [1x64 double] BeingDeleted: off BusyAction: 'queue' ButtonDownFcn: '' Children: [1x1 Axes] Clipping: on CloseRequestFcn: 'closereq' Color: [0.9400 0.9400 0.9400] Colormap: [256x3 double] ContextMenu: [0x0 GraphicsPlaceholder] CreateFcn: '' CurrentAxes: [1x1 Axes] CurrentCharacter: '' CurrentObject: [0x0 GraphicsPlaceholder] CurrentPoint: [0 0] DeleteFcn: '' DockControls: on FileName: '' GraphicsSmoothing: on HandleVisibility: 'on' InnerPosition: [348 480 583 437] IntegerHandle: on Interruptible: on InvertHardcopy: on KeyPressFcn: '' KeyReleaseFcn: '' MenuBar: 'none' Name: '' NextPlot: 'add' Number: 1 NumberTitle: on OuterPosition: [344 476 591 464] PaperOrientation: 'portrait' PaperPosition: [1.3350 3.3150 5.8300 4.3700] PaperPositionMode: 'auto' PaperSize: [8.5000 11] PaperType: 'usletter' PaperUnits: 'inches' Parent: [1x1 Root] Pointer: 'arrow' PointerShapeCData: [16x16 double] PointerShapeHotSpot: [1 1] Position: [348 480 583 437] Renderer: 'opengl' RendererMode: 'auto' Resize: on Scrollable: off SelectionType: 'normal' SizeChangedFcn: '' Tag: '' ToolBar: 'none' Type: 'figure' Units: 'pixels' UserData:  Visible: off WindowButtonDownFcn: '' WindowButtonMotionFcn: '' WindowButtonUpFcn: '' WindowKeyPressFcn: '' WindowKeyReleaseFcn: '' WindowScrollWheelFcn: '' WindowState: 'normal' WindowStyle: 'normal' XDisplay: ':100'