有没有办法用图像标记图。例如,当我使用以下内容时:
plot(Y(:,1),Y(:,2),'o','LineWidth',2);
gname(names)
我可以使用名称标记图中的每个点。有没有办法插入图像而不是名字?
答案 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])
结果如下:
这种方法存在问题:
没有交互式点击设施,您必须以编程方式显式插入和定位图像标签,或者自己编写这样的点击设施。 ginput
可能会有所帮助。
图形窗口只能有一个关联的颜色贴图。这意味着如果你有不同的图像,他们要么必须使用相同的色彩图,要么必须是真彩色图像。
不仅是位置,而且还必须在调用image
时指定图像的显示尺寸,默认情况下,两者都是根据绘图的坐标系指定的。这使得难以实现正确的宽高比。你可以使用axes property 'Units'
(暂时)切换到绝对单位,但是你必须找出正确的位置,例如绝对毫米或英寸。此外,图像通常用从上到下增加的垂直坐标来索引,而图通常具有从下到上增加的垂直坐标。这就是上面-0.3
属性中负值'YData'
的原因。
或者,您可以将每个图像插入位于绘图轴顶部的小axes中,这样可以使用axis image
轻松获得正确的方向和宽高比。你仍然会遇到问题,但要确定轴的正确位置。