【问题标题】:How to add a scaled color bar to line plots using a colormap in MATLAB?如何在 MATLAB 中使用颜色图将缩放的颜色条添加到线图中?
【发布时间】:2019-09-09 01:47:41
【问题描述】:

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

没有颜色条的二维线:

带颜色条的 3D 散点图:

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

【问题讨论】:

    标签: matlab data-visualization matlab-figure colorbar colormap


    【解决方案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';
    

    【讨论】:

    • 谢谢 - 我更喜欢改变实际色标间隔的第二种方法,因为它仍然启用自动刻度设置,与仅手动方法相反,之后可以手动设置,但两者都很有用要知道!
    • @M.Thompson:我同意!在写完答案的第一部分后,我想到了第二种方法,我想我会把两者都留在里面。
    猜你喜欢
    • 2012-01-23
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    • 2021-07-08
    • 2016-06-22
    • 2020-11-13
    • 1970-01-01
    • 2020-01-25
    相关资源
    最近更新 更多