MATLAB/Simulink/Stateflow

    • Михаил
      30.09.2014
      10:18

      Новая графическая система в MATLAB

      В релизе MATLAB R2014b появилась новая графическая система.

      Содержание

      Улучшенный вид – пример 3D графики

      Новая цветовая палитра (colormap) по умолчанию, parula, упрощает интерпретацию данных путем более точного их представления. Она упорядочена от темных к светлым тонам и визуально воспринимается однородно. Также у фигур теперь новый цвет фона по умолчанию, а координатная сетка теперь серого цвета, так что ваши данные отображаются более выраженно. Графическое сглаживание (anti-aliasing) улучшает вид линий и текста на графике.

      surf(peaks)
      

      Улучшенный вид – пример 2D графики

      Заголовки теперь используют полужирное начертание и по умолчанию большего размера. Линии используют новые цвета по умолчанию, которые проще отличать друг от друга, а также применяется новый порядок следования цветов. При использовании hold on порядок цветов теперь поддерживается.

      load besseldata
      
      plot(x,y1)
      hold on
      plot(x,y2,x,y3)
      plot(x,y4)
      hold off
      
      xlabel('x')
      ylabel('J_v(x)')
      title('Функции Бесселя');
      

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

      Новая графическая система использует стандартные объекты MATLAB. Это дает бóльшие возможности программного управления, а также легкой настройки ваших графиков.

      Графические объекты теперь отображают свои наиболее распространенные свойства в командном окне.

      s = surf(peaks)
      
      s = 
      
        Surface with properties:
      
             EdgeColor: [0 0 0]
             LineStyle: '-'
             FaceColor: 'flat'
          FaceLighting: 'flat'
             FaceAlpha: 1
                 XDat a: [1x49 double]
                 YDat a: [49x1 double]
                 ZDat a: [49x49 double]
                 CDat a: [49x49 double]
      
        Use GET to show all properties
      
      

      Вы можете обращаться и изменять индивидуальные графические свойства с использованием нотации object.property - подобно тому, как вы работаете с полями структуры.

      s.LineWidth
      s.EdgeColor = 'none';
      
      ans =
      
          0.5000
      
      

      Использование методов set и get для свойств объектов все еще работает в новой графической системе. Например, вы можете получить (get) все свойства объекта.

      get(s)
      
                AlignVertexCenters: 'off'
                         AlphaDat a: 1
                  AlphaDataMapping: 'scaled'
                   AmbientStrength: 0.3000
                        Annotation: [1x1 matlab.graphics.eventdata.Annotation]
                  BackFaceLighting: 'reverselit'
                      BeingDeleted: 'off'
                        BusyAction: 'queue'
                     ButtonDownFcn: ''
                             CDat a: [49x49 double]
                      CDataMapping: 'scaled'
                         CDataMode: 'auto'
                       CDataSource: ''
                          Children: []
                          Clipping: 'on'
                         CreateFcn: ''
                         DeleteFcn: ''
                   DiffuseStrength: 0.6000
                       DisplayName: ''
                         EdgeAlpha: 1
                         EdgeColor: 'none'
                      EdgeLighting: 'none'
                         FaceAlpha: 1
                         FaceColor: 'flat'
                      FaceLighting: 'flat'
                       FaceNormals: [48x48x3 double]
                   FaceNormalsMode: 'auto'
                  HandleVisibility: 'on'
                           HitTest: 'on'
                     Interruptible: 'on'
                         LineStyle: '-'
                         LineWidth: 0.5000
                            Marker: 'none'
                   MarkerEdgeColor: 'auto'
                   MarkerFaceColor: 'none'
                        MarkerSize: 6
                         MeshStyle: 'both'
                            Parent: [1x1 Axes]
                          Selected: 'off'
                SelectionHighlight: 'on'
          SpecularColorReflectance: 1
                  SpecularExponent: 10
                  SpecularStrength: 0.9000
                               Tag: ''
                              Type: 'surface'
                     UIContextMenu: []
                          UserDat a: []
                     VertexNormals: [49x49x3 double]
                 VertexNormalsMode: 'auto'
                           Visible: 'on'
                             XDat a: [1x49 double]
                         XDataMode: 'auto'
                       XDataSource: ''
                             YDat a: [49x1 double]
                         YDataMode: 'auto'
                       YDataSource: ''
                             ZDat a: [49x49 double]
                       ZDataSource: ''
      
      

      Новая возможность - Поворачиваемые подписи осей

      Дополнительно появились новые возможности в графической системе. Подписи к засечкам осей теперь можно поворачивать.

      open('PopulationPlot.fig')
      
      ax = gca;
      ax.XTickLabelRotation= -45;
      

      Новая возможность - Построение графиков с датами

      При использовании команды plot поддерживается новый тип данных datetime.

      load tempdata
      class(time)
      
      plot(time,temperature)
      ylabel('Температура')
      
      ans =
      
      datetime
      
      

      Подписи засечек осей форматируются и автоматически обновляются при изменении масштаба или перетаскивании графика.

      ax = gca;
      ax.XLim = [7.3275e+05 7.3319e+05];
      

      Новая возможность - Поддержка многоязычного текста и символов

      Теперь можно использовать символы Unicode в заголовках, подписях осей и пользовательских интерфейсах. Целочисленные значения для символов Unicode можно найти по адресу http://unicode-table.com.

      load unicodelabels
      open('SeismicData.fig')
      
      disp(xLabel);
      
      時間 (s) 
      
      disp(double(xLabel(1)));
      
             26178
      
      
      ax = gca;
      ax.XLabel.String = xLabel;
      ax.YLabel.String = yLabel;
      

      Новая возможность - Множественные цветовые палитры

      Вы теперь можете использовать отдельные цветовые палитры для каждой оси на фигуре.

      figure
      
      ax1 = subplot(1,2,1);
      sphere
      colormap(ax1, autumn)
      
      ax2 = subplot(1,2,2);
      sphere
      colormap(ax2, winter)
      

      Новая возможность - Вкладки в пользовательских интерфейсах

      f = figure;
      
      tabgp = uitabgroup(f);
      tab1 = uitab(tabgp,'Title','График Surface');
      tab2 = uitab(tabgp,'Title','График Contour');
      
      ax1 = axes('Parent',tab1);
      surf(peaks,'Parent',ax1);
      
      ax2 = axes('Parent',tab2);
      contourf(peaks,'Parent',ax2);
      
      tabgp.SelectedTab
      
      ans = 
      
        Tab (График Surface) with properties:
      
                    Title: 'График Surface'
          BackgroundColor: [0.9400 0.9400 0.9400]
                 Position: [0.0036 0.0071 0.9911 0.9286]
                    Units: 'normalized'
      
        Use GET to show all properties
      
      

      Другие новые возможности

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

      data1 = randn(5000,1);
      data2 = randn(5000,1)+ 2;
      
      figure
      h1 = histogram(data1);
      hold on
      h2 = histogram(data2);
      hold off
      
      legend show
      

      Можно легко управлять количеством прямоугольников. Можно настраивать тип нормализации. В этом примере, мы сделаем высоту каждого прямоугольника равным отношению числа измерений в прямоугольнике к ширине прямоугольника.

      morebins(h1);  %увеличить на 10%
      morebins(h1);  %увеличить на 10%
      
      fewerbins(h2); %уменьшить на 10%
      fewerbins(h2); %уменьшить на 10%
      
      h1.Normalization = 'countdensity';
      h2.Normalization = 'countdensity';
      
  • RSS подписка
    Архив материалов
    Май 2019
    Пн Вт Ср Чт Пт Сб Вс
        1 2 3 4 5
    6 7 8 9 10 11 12
    13 14 15 16 17 18 19
    20 21 22 23 24 25 26
    27 28 29 30 31    
    Поиск