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

tim*_*tim 4 matlab plot callback 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
Run Code Online (Sandbox Code Playgroud)

前两列是x和y值,它们被绘制为点经过

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

现在我要解决的问题如下:每当我点击绘图中的某个点时,我希望第3列和第4列中的信息显示为文本恰好位于框中的点,例如带有一些文本,例如 information 1: VALUE_COL3, information 2: VALUE_COL4.怎么实现呢?我想到了ButtonDownFcn属性,而不是检查点击的点并匹配它.但有没有更简单的方法呢?

谢谢!

nim*_*odm 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);
Run Code Online (Sandbox Code Playgroud)

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

产生这个......

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


Sam*_*rts 6

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

默认情况下,工具提示显示有关点的简单信息,即X和Y坐标.但是您可以通过获取datacursormode用于绘图的图形对象的句柄并设置它来自定义显示的文本UpdateFcn.在UpdateFcn回调中,判断在提示中显示的文本-在你的情况下,它可以让你从矩阵的第三和第四列的相应值,以字符串拼接在一起,他们的"信息",并返回显示.

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