本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

修改图形对象

以下示例演示如何在 MATLAB® 中创建、显示和修改图形对象。

图形对象

当 MATLAB 创建一个绘图时,它会创建一系列的图形对象。图形对象的例子有图窗、坐标区、线条、填充和文本。下图有三个图形对象 -- 一个坐标区、一条线条和一个文本对象。使用可选输出参数存储所创建的图形对象。

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

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

所有图形对象均有您可以查看和修改的属性。这些属性具有默认值。下面所示的线条对象 p 显示了最常用的线条属性,如 ColorLineStyleLineWidth

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

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';

父级和子级

MATLAB 按一定的层次结构排列图形对象。层次结构的顶部是称为图形根的特殊对象。若要访问图形根,请使用 groot 函数。

groot
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

所有图形对象(除了根)均有一个父级。例如,坐标区的父级是一个图窗。

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

许多对象也有子级。此套坐标区有三个子级 - 两个文本对象和一个线条对象。

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

预分配图形对象数组

在 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: [0.9400 0.9400 0.9400]
                 Colormap: [64x3 double]
                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'
            UIContextMenu: [0x0 GraphicsPlaceholder]
                    Units: 'pixels'
                 UserData: []
                  Visible: 'off'
      WindowButtonDownFcn: ''
    WindowButtonMotionFcn: ''
        WindowButtonUpFcn: ''
        WindowKeyPressFcn: ''
      WindowKeyReleaseFcn: ''
     WindowScrollWheelFcn: ''
              WindowState: 'normal'
              WindowStyle: 'normal'
                 XDisplay: ':106'