2

有什么方法可以用图像标记地块。例如,当我使用以下内容时:

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

gname(names)

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

4

1 回答 1

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])

结果如下所示:

图像标签

这种方法的问题:

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

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

  • 不仅位置,而且图像的显示大小都必须在调用中指定image,并且默认情况下都相对于绘图的坐标系指定。这使得很难获得正确的纵横比。您可以使用axes 属性'Units' (暂时)切换到绝对单位,但是您必须找出正确的位置,例如绝对毫米或英寸。此外,图像通常使用从上到下递增的垂直坐标进行索引,而绘图通常使用从下到上递增的垂直坐标。-0.3这就是上述'YData'属性为负值的原因。

或者,您可以将每个图像插入到位于绘图轴顶部的自己的小中,这样可以很容易地使用axis image. 尽管要找出轴的正确位置,但您仍然会遇到问题。

于 2013-12-30T15:58:06.257 回答