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

Михаил
30.09.2014 10:18:55

Новая графическая система в 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';
Просмотров: 8663
Комментариев: 0
Добавить комментарий
Страницы: 1  2  3  
    Страницы: 1  2  3  
    Добавить комментарий