如何在MATLAB中使用colormap将缩放颜色条添加到线图中?

如何在MATLAB中使用colormap将缩放颜色条添加到线图中?,matlab,data-visualization,matlab-figure,colorbar,colormap,Matlab,Data Visualization,Matlab Figure,Colorbar,Colormap,的答案解释了如何将颜色贴图与线图结合使用,但如何将缩放颜色条添加到图形中,如散点图 xHorz=[0:0.001:2*pi]; nPts=努美尔(xHorz); x=零(NPT,1); x(:,1)=xHorz; y=sin(x); noiseMag=1; yNoise=y+noiseMag*randn(净现值,1); winSizes=[100:100:2000]; nWins=numel(winSizes); ySm=零(净现值、净现值); 对于iWin=1:nWins ySm(:,iWin

的答案解释了如何将颜色贴图与线图结合使用,但如何将缩放颜色条添加到图形中,如散点图

xHorz=[0:0.001:2*pi];
nPts=努美尔(xHorz);
x=零(NPT,1);
x(:,1)=xHorz;
y=sin(x);
noiseMag=1;
yNoise=y+noiseMag*randn(净现值,1);
winSizes=[100:100:2000];
nWins=numel(winSizes);
ySm=零(净现值、净现值);
对于iWin=1:nWins
ySm(:,iWin)=平滑数据(yNoise,'leash',winSizes(iWin));
结束
xScatter=repmat(x,1,nWins);
zScatter=repmat(winSizes,NPT,1);
f1=数字;
散射体3(X散射体(:)、Z散射体(:)、ySm(:)、2、Z散射体(:)、‘填充’)
cbar=色条;
cbar.Label.String='平滑窗口大小';
f2=数字;
lineColors=parula(nWins);
对于iWin=1:nWins
绘图(x,ySm(:,iWin),“颜色”,线条颜色(iWin,:),“线条宽度”,2);
等等
结束
不带颜色条的二维线:

带有颜色条的三维散射:


我相信
smoothdata()
函数需要R2017a或更高版本。

像现在一样绘制线条后,可以按如下方式添加颜色栏:

colormap(lineColors);
cbar=色条;
cbar.Label.String='平滑窗口大小';
N=5;%滴答声数
cbar.Ticks=linspace(0,1,N);
cbar.ticklebals=linspace(winsize(1),winsize(end),N);
默认情况下,颜色栏从0变为1。我只是更改了与此间隔关联的标签。这将产生:

请注意,我使用了
lineColors
作为图形的颜色映射。这是决定颜色栏中颜色的因素。您还可以执行
colormapparula
以获得更平滑的颜色渐变


另一种方法是更改实际间隔。绘图轴有一个指示此操作的
CLim
属性。因此,你可以简单地做到:

colormap(lineColors);
集合(gca,'clim',winSizes([1,end]))
cbar=色条;
cbar.Label.String='平滑窗口大小';

谢谢-我更喜欢第二种改变实际色标间隔的方法,因为它仍然可以启用自动勾选设置,这可以在以后手动设置,而不是仅手动设置,但这两种方法都很有用@汤普森先生:我同意!在写完答案的第一部分后,我想到了第二种方法,我想我应该把这两种方法都放进去。