我正在为我拥有的大小(7x24)的数据创建一个颜色贴图,让我们用一些随机数替换它
b = randi(50,7,24);
t = imagesc(b,[min(min(b)) max(max(b))]);
现在为了添加注释,我必须知道我的轴的确切起点和终点,以便我可以添加一个矩形来选择图像中的每个点
xPOSITION = get(gca,'Position')
xPOSITION =
0.1300 0.1100 0.7750 0.8150
annotation('rectangle',[0.13 0.11 (0.7750 - 0.13)/24 (0.8150 -0.11)/7],'FaceColor','blue','FaceAlpha',.2)
好吧现在当我尝试将注释添加到数据的确切起点时,起点似乎很好,但实际上应该等于每个点的矩形的大小要小很多 根据我的计算,每个方框等于(0.7750 - 0.13)/ 24 X(0.8150 -0.11)/ 7,因为单位是标准化的,我在计算中是否有任何错误?或者注释以不同的方式工作?任何帮助将受到高度赞赏
UPDATE 只是为了测试我在注释的每个维度上添加了0.11,它似乎是确切的大小,因为我无法弄清楚
annotation('rectangle',[0.13 0.11 ((0.7750 - 0.13) +0.11)/24 ((0.8150 -0.11)+0.11)/7],'FaceColor','blue','FaceAlpha',.2)
答案 0 :(得分:2)
Position
属性是[left bottom width height]
而不是 [left bottom right top]
,因为您似乎正在对待它(因为您正在减去元素1从3和2从4)。要正确计算用于显示的rect
,您只想将width
和height
组件除以这些维度中的元素数量。
annotation('rectangle', [xPOSITION(1), xPOSITION(2), ...
xPOSITION(3)/size(b, 2), xPOSITION(4) / size(b,1)])
或更简单:
annotation('rectangle', xPOSITION ./ [1 1 fliplr(size(b))])
话虽如此,如果您只是想在数据上绘制矩形,那么您最好只创建一个rectangle
对象,该对象会自动以您的数据为单位
rectangle('Position', [0.5 6.5 1 1], 'LineWidth', 5)