在uiaxes(gui)中图像顶部的叠加图

overlay plot on top of image in uiaxes (gui)

我有以下代码(有效)执行 imshow 栅格数据,然后在标记列表的顶部绘制红点(即基础层是星星的图像,叠加层是红点,标记它们)。

function plot(this)
   imshow(WORLD.image, [0 1]);
   hold on
   plot([this.centers.x], [this.centers.y], 'r.');
   hold off
end

好的,现在我正在使用 GUIDE 创建 GUI,并且我有使用父 属性 的 imshow 来获取 ui 轴内的图像。那部分有效,但情节似乎没有采用 Parent,并且除了坚持和推迟之外不起作用(它用情节创建了一个新的 window)。我该如何解决? [handles.pictureBox 是轴控件的句柄]

imshow(WORLD.mask, [0 1], 'Parent', handles.pictureBox);
hold on
plot([p.centers.x], [p.centers.y], 'r.', 'Parent', handles.pictureBox);
hold off

我观察到的是,如果我取消 hold on,hold off,那么基本图像就会被情节取代。但是如果我把它留在里面,同样的事情会发生,但还会显示一个弹出窗口。

哦,是的,在图像和绘图之间保持轴的比例非常重要。现在,我看到绘图正在调整 x,y 边界。如果imshow是1K x 1K的图像,那么我希望绘图范围完全相同以便标签覆盖。

绘图确实接受父句柄,查看 this help page:

plot(handles.pictureBox,[p.centers.x], [p.centers.y], 'r.');

此外,hold 也接受坐标轴句柄。您可以使用以下内容:

hold(handles.pictureBox,'on');

(或 'off' 显然...)