%% 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

%
% MATLAB shows the same display if the semicolon is missing from the command that creates the object.

txt2 = text(x(end), y(end), 'pi')

%
%% 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

%
% 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

%
% All graphics objects (except the root) have a parent. For example, the parent of an axes is a figure.

ax = gca;
ax.Parent

%
% Many objects also have children. This axes has three children - the two text objects and the line object.

ax.Children

%
% 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

%
%% 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

%
%% 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)

%
% Copyright 2014 The MathWorks, Inc.