Matlab:绘制点并使它们可单击以显示有关它的信息

时间:2011-12-09 08:03:41

标签: matlab callback plot figure

我有一些这样的观点:

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属性,而不是检查点击的点并匹配它。但有没有更简单的方法呢?

谢谢!

2 个答案:

答案 0 :(得分: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”点,即可获得上下文菜单:

Produces this...

可以在Mathwork's site找到更多信息。

答案 1 :(得分:6)

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

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

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