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 Color
, LineStyle
, and LineWidth
.
p
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 Color
property.
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 groot
function.
groot
ans = Graphics Root with properties: CurrentFigure: [1x1 Figure] ScreenPixelsPerInch: 75 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: [360 502 560 420] Units: 'pixels' Show all properties
Many objects also have children. This axes has three children - the two text objects and the line object.
ax.Children
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 get
command.
get(f)
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: [360 502 560 420] IntegerHandle: on Interruptible: on InvertHardcopy: on KeyPressFcn: '' KeyReleaseFcn: '' MenuBar: 'none' Name: '' NextPlot: 'add' Number: 1 NumberTitle: on OuterPosition: [356 498 568 447] PaperOrientation: 'portrait' PaperPosition: [0.5167 2.7000 7.4667 5.6000] PaperPositionMode: 'auto' PaperSize: [8.5000 11] PaperType: 'usletter' PaperUnits: 'inches' Parent: [1x1 Root] Pointer: 'arrow' PointerShapeCData: [16x16 double] PointerShapeHotSpot: [1 1] Position: [360 502 560 420] 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: ':0'