Colorbar没有显示我想要的颜色

时间:2013-04-15 07:52:57

标签: matlab plot matlab-figure colorbar

我的问题与this帖子中的问题类似。

我有一个灰度图像,我在上面绘制点。为了绘制我使用colormap('jet')的点,但是因为我希望图像是灰度的,在绘制点之后我重置了色图,colormap('gray')

但我想展示一个颜色条!并且颜色条以灰度绘制,而不是“喷射”。 我怎么能这样做?

修改 我想要一个显示点颜色的Colorbar!

enter image description here

2 个答案:

答案 0 :(得分:5)

您应该将相同的数据转换为R-,G-和B-通道(这将是灰度RGB图像),从而将图像转换为RGB。 MatLab中的Colormap不适用于RGB图像,仅适用于索引的图像。然后使用您喜欢的色彩图在图像上绘制点。

答案 1 :(得分:2)

正如here所述,有几种方法:

  1. 如果您有图像处理工具箱,请使用subimage创建带有单独色彩图的独立图像。然后绘制图像,您的点,并使用linkaxes将它们合并为一个。

  2. 使用文件交换中的freezeColors(或multiple colormaps,我从未亲自测试过)。这是一种非常简单的方法来创建更大的色彩映射,并自动选择色彩映射的右侧部分以显示图像和色条。

  3. 正如anandr所说,将灰度图像转换为RGB; Matlab不对RGB图像使用色彩映射,这使您可以自由地绘制点并显示独立于图像的颜色条。

  4. (3)的示例代码:

    I = imread('cameraman.tif');
    imshow(cat(3,I,I,I))
    
    hold on
    
    x = @() round(size(I,1) * rand(50,1));
    y = @() round(size(I,2) * rand(50,1));
    
    plot(x(), y(), 'r.')
    plot(x(), y(), 'g.')
    plot(x(), y(), 'b.')
    
    colormap('jet')
    colorbar
    

    结果:

    pic w/ points & colorbar