【问题标题】:Matlab: Plot points and make them clickable to display informations about itMatlab:绘制点并使它们可点击以显示有关它的信息
【发布时间】:2012-01-16 13:52:49
【问题描述】:

我有几点是这样的:

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

谢谢!

【问题讨论】:

    标签: matlab callback plot figure


    【解决方案1】:

    虽然 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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 谢谢,太棒了!将输入参数传递给回调函数时效果很好,选择相应的行并显示信息!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-11
      • 1970-01-01
      • 2019-06-22
      相关资源
      最近更新 更多