我有一些这样的观点:
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
属性,而不是检查点击的点并匹配它。但有没有更简单的方法呢?
谢谢!
答案 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”点,即可获得上下文菜单:
可以在Mathwork's site找到更多信息。
答案 1 :(得分:6)
MATLAB数字有一个名为数据游标的功能。在工具栏上,有一个看起来像蓝色曲线的按钮,上面有一个十字准线和一个小工具提示。如果单击此选项然后选择您绘制的一个点,您将在该点上方获得一些工具提示,其中提供了有关该点的一些信息。您可以双击工具提示进行拾取,然后将其拖到其他绘制点上。
默认情况下,工具提示显示有关点的简单信息,即X和Y坐标。但是,您可以通过获取用于绘图的图形的datacursormode
对象的句柄并设置其UpdateFcn
来自定义显示的文本。执行UpdateFcn
回调以确定工具提示上显示的文本 - 在您的情况下,它可以从矩阵的第三列和第四列获取相应的值,将它们与字符串“information”拼接在一起,然后返回用于显示。
请参阅文档中的this示例,了解如何更详细地完成此操作。