custom colormap with missing colors
5 ビュー (過去 30 日間)
古いコメントを表示
If I create the following image, with 3 possible values: 1, 2 and 10.
im = zeros(128,128)
im(1:32,:) = 1
im(33:64,:) = 2
im(65:end,:) = 10
ax = imshow(im,[])
%I apply the following colormap:
cmap = [0.9020 0.0980 0.2941
0.2353 0.7059 0.2941
0.8000 0.8000 0.8000]
colormap(ax.Parent,cmap)
I obtain an image with only 2 colors, when the colormap has 3 colors. Why isn't the colormap being respected? I want these specific colors for each value of the image. And I want my colormap to include only these colors, no more and no less. And no, my image does not contain values from 3 to 9. It is just 1, 2 and 10 and it is supposed to be like this.
Any help appreciated
André
0 件のコメント
採用された回答
Stephen23
2018 年 7 月 4 日
編集済み: Stephen23
2018 年 7 月 4 日
You could:
1. specify the limits, and provide the axes handle when calling colormap:
imshow(im,[1,3]);
colormap(gca,cmap)
2. treat it as an indexed image (note that out-of-range indices are truncated to the end colors):
>> imshow(im,cmap)
3. convert it to a TrueColor (RGB) image:
>> [~,idx] = ismember(im,[1,2,10]);
>> rgb = ind2rgb(idx,cmap);
>> imshow(rgb)
3 件のコメント
Stephen23
2018 年 7 月 4 日
編集済み: Stephen23
2018 年 7 月 4 日
@André: Thank you. You might like to read these:
You can easily specify the patch 'CDataMapping' to be 'direct', in which case the patch CData corresponds one-to-one with the axes colormap, as does the colorbar. Like this:
>> cmap = [0,0,1;0,1,0;1,0,0;0,1,1;1,1,0;1,0,1]; % six ugly colors.
>> X = [0,1,0,1;1,2,1,2;1,2,1,2;0,1,0,1]; % four squares
>> Y = [0,0,1,1;0,0,1,1;1,1,2,2;1,1,2,2]; % four squares
>> patch(X,Y,[1;2;3;6],'FaceColor','flat','CDataMapping','direct')
>> colormap(cmap)
>> colorbar()
>> caxis([0.5,6.5])
Note the third input to patch: you can see how each patch C value corresponds to the colormap row/color. Note how all colormap colors are shown exactly in the colorbar, in the correct order:
A colorbar is just a narrow axes on one side of the figure, so you could easily create this yourself, which gives you complete control over its location, size, tick labels, etc.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Red についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!