4

我有这样的几点:

matrix = rand(6, 4)
0.8147    0.2785    0.9572    0.7922
0.9058    0.5469    0.4854    0.9595
0.1270    0.9575    0.8003    0.6557
0.9134    0.9649    0.1419    0.0357
0.6324    0.1576    0.4218    0.8491
0.0975    0.9706    0.9157    0.9340

前两列是 x 和 y 值,它们通过以下方式绘制为点

plot(matrix(:, 1), matrix(:, 2), '*r'

现在我想要解决的问题如下:每当我点击图中的某个点时,我希望第 3 列和第 4 列中的信息显示为框内该点右侧的文本,例如带有一些文本,例如 information 1: VALUE_COL3, information 2: VALUE_COL4。如何做到这一点?我想到了ButtonDownFcn属性,然后检查了点击的点并匹配它。但是有没有更简单的方法呢?

谢谢!

4

2 回答 2

8

虽然 Sam 的方法在这里可能是正确的解决方案,但我想提供另一种方法(尽管它更像是一种“黑客”而不是正确的解决方案)。

您可以附加上下文菜单来处理图形对象。这些菜单可以显示多个选择,甚至让您的脚本响应用户选择。看看下面的例子:

x = [1:10];
y = x.^2;

plot(x,y); hold on;
h = plot(x(5), y(5),'ro'); %% save the handle to the point we want to annotate

hcmenu = uicontextmenu;
item1 = uimenu(hcmenu, 'Label', 'info 1');
item2 = uimenu(hcmenu, 'Label', 'info 2');
item3 = uimenu(hcmenu, 'Label', 'info 2');

set(h, 'uicontextmenu', hcmenu);

当您右键单击“o”点时,您将获得上下文菜单:

产生这种...

更多信息可以在Mathwork 的网站上找到。

于 2011-12-09T10:06:04.790 回答
6

MATLAB 图形具有称为数据游标的功能。在工具栏上,有一个看起来像一条蓝色曲线的按钮,上面有一个十字准线和一个小工具提示。如果单击此按钮,然后选择您绘制的点之一,您将在该点上方获得一个小工具提示,提供有关该点的一些信息。您可以双击工具提示以将其拾起,然后将其拖到其他绘图点。

默认情况下,工具提示会显示有关点的简单信息,即它们的 X 和 Y 坐标。但是您可以通过获取datacursormode用于绘图的图形对象的句柄并设置其UpdateFcn. 执行UpdateFcn回调以确定工具提示上显示的文本 - 在您的情况下,它可以从矩阵的第三列和第四列获取相应的值,将它们与字符串“信息”拼接在一起,然后返回以供显示。

请参阅文档中的示例,以了解如何更详细地完成此操作。

于 2011-12-09T09:48:16.003 回答