Изменение графических объектов

В этом примере показано, как создавать, отображать и изменять графические объекты в MATLAB ®.

Графические объекты

Когда MATLAB создает график, он создает серию графических объектов. Фигуры, оси, линии, закрашенные фигуры и текст являются примерами графических объектов. Рисунок ниже имеет три графических объектов: Оси, линия и текстовый объект. Используйте необязательный выходной аргумент для хранения созданного графического объекта.

x = -pi:pi/20:pi;
y = sin(x);

f = figure;
p = plot(x,y);
txt1 = text(0.2,0,'sin(x)');

Figure contains an axes. The axes contains 2 objects of type line, text.

Все графические объекты имеют свойства, которые можно просматривать и изменять. Эти свойства имеют значения по умолчанию. Отображение объекта линии, p, показывает наиболее часто используемые свойства линий, такие как Color, LineStyle, и 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 показывает то же отображение, если точка с запятой отсутствует в команде, которая создает объект.

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

Figure contains an axes. The axes contains 3 objects of type line, text.

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

Получение свойств графического объекта

Для доступа к отдельным свойствам графического объекта используйте синтаксис записи через точку object.PropertyName. Для примера верните LineWidth свойство для объекта линия.

pcol = p.LineWidth
pcol = 0.5000

Измените цвет линии на красный путем установки ее Color свойство.

p.Color = 'red';

Figure contains an axes. The axes contains 3 objects of type line, text.

Родительские элементы и дети

MATLAB упорядочивает графические объекты в иерархии. Верхняя часть иерархии является специальным объектом, называемым графическим корнем. Для доступа к графическому корню используйте groot функция.

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

Все графические объекты (кроме корня) имеют родительский элемент. Например, родительским элементом осей является рисунок.

ax = gca;
ax.Parent
ans = 
  Figure (1) with properties:

      Number: 1
        Name: ''
       Color: [1 1 1]
    Position: [360 502 560 420]
       Units: 'pixels'

  Show all properties

У многих объектов также есть дети. У этой оси есть три дочерних элемента - два текстовых объекта и объект линии.

ax.Children
ans = 
  3x1 graphics array:

  Text    (pi)
  Text    (sin(x))
  Line

Поскольку оси имеют несколько дочерних элементов, значение Children свойство является массивом графических объектов. Чтобы получить доступ к отдельному дочернему элементу осей, индексируйте в массив. Затем можно задать свойства дочернего объекта.

t = ax.Children(2);       % get the 'sin(x)' text object
t.FontWeight = 'bold';    % set the font to bold

Figure contains an axes. The axes contains 3 objects of type line, text.

Предварительное выделение массива графических объектов

Перед использованием массива лучшей практики в MATLAB. Используйте gobjects команда для предварительного выделения массива графических объектов. Затем можно добавить графические объекты в массив.

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  

Получение всех свойств объекта

Графические объекты в MATLAB имеют много свойств. Чтобы увидеть все свойства объекта, используйте get команда.

get(f)
                 Alphamap: [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: [360 502 560 420]
            IntegerHandle: on
            Interruptible: on
           InvertHardcopy: on
              KeyPressFcn: ''
            KeyReleaseFcn: ''
                  MenuBar: 'none'
                     Name: ''
                 NextPlot: 'add'
                   Number: 1
              NumberTitle: on
            OuterPosition: [360 502 560 420]
         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'
Для просмотра документации необходимо авторизоваться на сайте