如何使用MATLAB中的色彩图向线图添加缩放颜色条?

问题描述 投票:1回答:1

Matlab colormap line plot的答案解释了如何使用带有线图的彩色地图,但是如何将缩放的颜色条添加到图中,就像散点图一样?

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线:

使用colorbar进行3D散射:

我相信smoothdata()功能需要R2017a或更高版本。

matlab data-visualization matlab-figure colorbar colormap
1个回答
1
投票

在绘制线条后,就像现在一样,您可以添加颜色条,如下所示:

colormap(lineColors);
cbar = colorbar;
cbar.Label.String = 'Smoothing Window Size';
N = 5;    % number of ticks
cbar.Ticks = linspace(0,1,N);
cbar.TickLabels = linspace(winSizes(1),winSizes(end),N);

默认情况下,颜色条从0到1.我只是更改了与此间隔关联的标签。这会产生:

请注意,我使用lineColors作为图的颜色映射。这决定了颜色条中的颜色。你也可以做colormap parula来获得更平滑的颜色渐变。


另一种方法是改变实际间隔。情节的轴有一个CLim属性,指示这一点。你可以简单地这样做:

colormap(lineColors);
set(gca,'clim',winSizes([1,end]))
cbar = colorbar;
cbar.Label.String = 'Smoothing Window Size';
© www.soinside.com 2019 - 2024. All rights reserved.