如何在 MATLAB 中使用颜色图将缩放颜色条添加到线图中?
How to add a scaled color bar to line plots using a colormap in 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
没有颜色条的二维线:
带颜色条的 3D 散点图:
我认为 smoothdata()
功能需要 R2017a 或更高版本。
像现在一样绘制线条后,您可以按如下方式添加颜色条:
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';
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
没有颜色条的二维线:
带颜色条的 3D 散点图:
我认为 smoothdata()
功能需要 R2017a 或更高版本。
像现在一样绘制线条后,您可以按如下方式添加颜色条:
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';