Octave 对文本打印批注使用不同的颜色

Octave 对文本打印批注使用不同的颜色,octave,Octave,我有一个只有几个像素的图像图,我想在每个像素处用一个值进行注释。由于颜色在常规的颜色贴图上都不同,所以我不能为所有的注释都指定一个固定的颜色,但是我想改变颜色 x=1:3; y=1:3; m(y, x) = x .* y' * 6; image(m); xi = repmat(x, 3, 1); yi = repmat(y', 1, 3); text(xi, yi, "label"); 我当然可以使用 text(xi, yi, "label", "color", "white"); 我没有使

我有一个只有几个像素的图像图,我想在每个像素处用一个值进行注释。由于颜色在常规的颜色贴图上都不同,所以我不能为所有的注释都指定一个固定的颜色,但是我想改变颜色

x=1:3;
y=1:3;
m(y, x) = x .* y' * 6;
image(m);
xi = repmat(x, 3, 1);
yi = repmat(y', 1, 3);
text(xi, yi, "label");
我当然可以使用

text(xi, yi, "label", "color", "white");
我没有使用“白色”而是尝试了两种3D矩阵

clabels = zeros(3, 3, 3);
clabels(:, :, 2) = 0.75; % for medium green, RGB = [0 192 0];
和细胞基质

clabels = {};
clabels(y, x) = [0 0.75 0];
在这两种情况下,使用
文本(xi,yi,“label”,color,clabels)
都会产生一个

错误:颜色属性“颜色”的值无效


有没有办法为颜色属性创建类似矩阵的值?或者我必须为我想要注释的每种颜色创建一个
text

您可以使用
{'Property'},{values}
格式一次指定所有文本对象的颜色。不幸的是,您不能直接在构造函数中执行此操作,但可以使用
set
text
返回的文本对象数组执行此操作

t = text(xi, yi, 'label');

% Create a cell array where each cell is a different RGB color
colors = arrayfun(@(x)rand(1,3), t, 'UniformOutput', false);

set(t, {'Color'}, colors)

这并不能回答这个问题,因为它需要多个文本命令,但它可能会有所帮助。首先,根据像素的亮度确定标签是黑色还是白色
bw=colormap*[0.299;0.587;0.114])>0.5
为黑色标签创建布尔矩阵
bl=(bw==1)
和白色标签
wh=(bw==0)
。使用这些注释:
文本(xi(bl)、yi(bl)、“标签”、“颜色”、“黑色”)
和相应的白色。我不能再编辑注释了。它应该是
bl=(bw(m)==1)
wh=(bw(m)==0)