有什么方法可以用图像标记地块。例如,当我使用以下内容时:
plot(Y(:,1),Y(:,2),'o','LineWidth',2);
gname(names)
我可以用名称标记图中的每个点。有没有办法插入图像而不是名称?
这是可能的,但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
. 尽管要找出轴的正确位置,但您仍然会遇到问题。