Ответ на Линейный график цветовой карты Matlab объясняет, как использовать цветные карты с линейными графиками, но как добавить масштабированную цветную полосу к рисунку, как в случае точечной диаграммы?
xHorz = [0:0.001:2*pi];
nPts = numel(xHorz);
x = zeros(nPts,1);
x(:,1) = xHorz;
y = sin(x);
noiseMag = 1;
yNoise = y + noiseMag*randn(nPts,1);
winSizes = [100:100:2000];
nWins = numel(winSizes);
ySm = zeros(nPts,nWins);
for iWin = 1:nWins
ySm(:,iWin) = smoothdata(yNoise,'loess',winSizes(iWin));
end
xScatter = repmat(x,1,nWins);
zScatter = repmat(winSizes,nPts,1);
f1 = figure;
scatter3(xScatter(:),zScatter(:),ySm(:),2,zScatter(:),'filled')
cbar = colorbar;
cbar.Label.String = 'Smoothing Window Size';
f2 = figure;
lineColors = parula(nWins);
for iWin = 1:nWins
plot(x,ySm(:,iWin),'Color',lineColors(iWin,:),'LineWidth',2);
hold on
end
2D линия без цветовой шкалы:
3D-разброс с цветовой шкалой:
Я считаю, что для функции smoothdata()
требуется R2017a или более поздняя версия.