在Matlab中使用图像标记图

时间:2013-12-29 00:32:16

标签: image matlab plot labeling

有没有办法用图像标记图。例如,当我使用以下内容时:

plot(Y(:,1),Y(:,2),'o','LineWidth',2);

gname(names)

我可以使用名称标记图中的每个点。有没有办法插入图像而不是名字?

1 个答案:

答案 0 :(得分:0)

有可能,但不如gname那么方便。您可以使用image的低级版本在图中的任意位置插入图像。这是一个简单的例子,它将Matlab附带的“Mandrill”图像及其左上角像素放在位置(pi / 2,0):

% example plot
x = linspace(0, 2*pi, 100);
plot(x, cos(x))

% insert image
load mandrill
colormap(map)
image('CData', X, 'XData', [pi/2, pi/2 + 0.5], 'YData', [0, -0.3])

结果如下:

image label

这种方法存在问题:

  • 没有交互式点击设施,您必须以编程方式显式插入和定位图像标签,或者自己编写这样的点击设施。 ginput可能会有所帮助。

  • 图形窗口只能有一个关联的颜色贴图。这意味着如果你有不同的图像,他们要么必须使用相同的色彩图,要么必须是真彩色图像。

  • 不仅是位置,而且还必须在调用image时指定图像的显示尺寸,默认情况下,两者都是根据绘图的坐标系指定的。这使得难以实现正确的宽高比。你可以使用axes property 'Units' (暂时)切换到绝对单位,但是你必须找出正确的位置,例如绝对毫米或英寸。此外,图像通常用从上到下增加的垂直坐标来索引,而图通常具有从下到上增加的垂直坐标。这就是上面-0.3属性中负值'YData'的原因。

或者,您可以将每个图像插入位于绘图轴顶部的小axes中,这样可以使用axis image轻松获得正确的方向和宽高比。你仍然会遇到问题,但要确定轴的正确位置。