Modify Graphics Objects
This example shows how to create, display, and modify graphics objects in MATLAB®.
Graphics Objects
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: [-3.1416 -2.9845 -2.8274 -2.6704 -2.5133 -2.3562 -2.1991 -2.0420 -1.8850 -1.7279 -1.5708 -1.4137 -1.2566 -1.0996 -0.9425 -0.7854 -0.6283 -0.4712 -0.3142 -0.1571 0 0.1571 0.3142 0.4712 0.6283 0.7854 0.9425 1.0996 ... ] (1x41 double) YData: [-1.2246e-16 -0.1564 -0.3090 -0.4540 -0.5878 -0.7071 -0.8090 -0.8910 -0.9511 -0.9877 -1 -0.9877 -0.9511 -0.8910 -0.8090 -0.7071 -0.5878 -0.4540 -0.3090 -0.1564 0 0.1564 0.3090 0.4540 0.5878 0.7071 0.8090 0.8910 ... ] (1x41 double) Use GET to 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' Use GET to show all properties
Get Graphics Object 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';
Parents and Children
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: 100 ScreenSize: [1 1 1280 1024] MonitorPositions: [1 1 1280 1024] Units: 'pixels' Use GET to 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: [1 1 1] Position: [348 376 583 437] Units: 'pixels' Use GET to 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);
t.FontWeight = 'bold';
Preallocate Graphics Objects Array
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
Get All Object Properties
Graphics objects in MATLAB have many properties. To see all the properties of an object, use the get
command.
get(f)
Alphamap: [0 0.0159 0.0317 0.0476 0.0635 0.0794 0.0952 0.1111 0.1270 0.1429 0.1587 0.1746 0.1905 0.2063 0.2222 0.2381 0.2540 0.2698 0.2857 0.3016 0.3175 0.3333 0.3492 0.3651 0.3810 0.3968 0.4127 0.4286 0.4444 0.4603 ... ] (1x64 double) BeingDeleted: off BusyAction: 'queue' ButtonDownFcn: '' Children: [1x1 Axes] Clipping: on CloseRequestFcn: 'closereq' Color: [1 1 1] 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' Icon: '' InnerPosition: [348 376 583 437] IntegerHandle: on Interruptible: on InvertHardcopy: on KeyPressFcn: '' KeyReleaseFcn: '' MenuBar: 'none' Name: '' NextPlot: 'add' Number: 1 NumberTitle: on OuterPosition: [348 376 583 437] 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 376 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: ':99'