创建一个颜色条,该颜色条适合使用matlab上的viscircle绘制的圆的颜色

创建一个颜色条,该颜色条适合使用matlab上的viscircle绘制的圆的颜色,matlab,plot,matlab-figure,colorbar,colormap,Matlab,Plot,Matlab Figure,Colorbar,Colormap,我在序列图像上检测到一些对象。对于我保存的每个帧ik IMG(ik,:)={centers, radii, metric, ik}; 其中,centers是一个包含我检测到的n个圆的2D坐标的n*2数组,radii是值或它们各自的半径,metrics提供了有关该检测“质量”的信息 我想在一张图像上同时绘制所有这些圆(颜色贴图为“灰色”),这些圆的颜色对应于时间步长(即ik)。为此,我采取以下措施: figure(2001) imagesc(averageIMG)

我在序列图像上检测到一些对象。对于我保存的每个帧
ik

    IMG(ik,:)={centers, radii, metric, ik};
其中,
centers
是一个包含我检测到的n个圆的2D坐标的n*2数组,
radii
是值或它们各自的半径,
metrics
提供了有关该检测“质量”的信息

我想在一张图像上同时绘制所有这些圆(颜色贴图为“灰色”),这些圆的颜色对应于时间步长(即
ik
)。为此,我采取以下措施:

    figure(2001)
    imagesc(averageIMG)
    axis equal
    colormap(gray)
    hold on
    cmap=jet(imgend-imgstart+1);
    for ik = 1:length(IMG)
        centers = IMG{ik,1};
        radii   = IMG{ik,2};
        viscircles(centers,radii,'Color',cmap(ik,:));
        hold on
    end
如何将与圆圈颜色相对应的颜色条(带有jet colormap)绘制为timestep
ik
的图像

注意:我需要为用作此绘图背景的图像保留颜色贴图“灰色”


谢谢你的帮助

老实说,这很棘手。 你想要的是两个色条,我不确定你是想同时绘制还是只绘制其中一个。 现在,您可以做的是在更改颜色贴图之前绘制颜色条并获得限制

hcb=colorbar;
Limsgray=hcb.Limits; %I'm doing this because it's the easiest way to get the max value of the image if you don't know it. if do know the max value you don't necessarily have to do this part
然后将“Limsgray”的最大值添加到所有圆的值中,并将颜色条限制的第二个(最大)值设置为“圆的最大值+图像的最大值”。
您还必须附加颜色映射,以便:

cg=colormap(gray);
cj=jet(imgend-imgstart+1);
cmap=[cg;cj];
然后,您必须添加自定义标签和记号,您可以使用这些标签和记号来执行此操作

 hcb.TickLabels=[]; %removes tick labels if there's no text
hcb.Ticks=[]; %removes ticks if there are no numbers, so add your own
还可以通过在灰色和黑色之间添加类似白色的颜色,在颜色栏之间添加一些间距。如果您只想显示1,您只需通过调整限制来更改范围,我建议先绘制圆,然后添加灰色(但这是我的意见)

如果你觉得这是太多的努力或东西,你可以尝试这个文件,但我认为改变它更容易。

@LeChat如果这对你有帮助,请投票表决。如果它解决了你的问题,请接受它。如果您遇到困难,需要帮助,请回复并询问。