为两个圆圈之间的重叠区域指定特定颜色

时间:2015-05-30 11:24:36

标签: matlab plot overlap

我正在使用此代码绘制两个圆圈。它会随机为最终图像中的区域着色。但我想为圆圈指定特定的灰色阴影,为重叠区域指定不同的阴影。

% size of image
sz = [800 800];

% generate coordinates
y = 1:sz(1);
x = 1:sz(2);
[xx, yy] = meshgrid(x, y);
% draw circles
ci1 = (xx-300).^2 + (yy-400).^2 <= 200^2;
ci2 = (xx-500).^2 + (yy-400).^2 <= 200^2;

% draw image containing circles
imagesc (ci1 + ci2 );
colormap(gray);

1 个答案:

答案 0 :(得分:1)

您可以使用不同区域的二进制编码以及自定义色彩映射:

% draw image containing circles
imagesc (ci1 + 2 * ci2 );
caxis([-0.5, 3.5])
colormap([0 0 0         % background: black
          1 0 0         % circle 1: red
          0 1 0         % circle 2: green
          0 0 1])       % overlap: blue

绘制的数据包含0表示背景,1表示圆圈1,2表示圆圈2,3表示重叠。 caxiscolormap命令将数字0,1,2,3映射为指定为RGB三元组的黑色,红色,绿色,蓝色。调整色彩映射中的条目以获得您喜欢的特定灰色阴影。

注意:您的代码缺少一行[xx, yy] = meshgrid(x, y);