Новая графическая система в 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.
![]()
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';
![]()
Комментарии