【问题标题】:Make clicking MATLAB plot markers plot subgraph制作单击 MATLAB 绘图标记绘图子图
【发布时间】:2012-05-02 05:22:29
【问题描述】:

在 Matlab 2011b 中,我有一个多维矩阵,该矩阵最初将呈现为 2 维的二维图。我希望用鼠标左键使标记可点击。单击标记会绘制一个由单击值分割的其他维度的新图形。

这个问题与Matlab: Plot points and make them clickable to display informations about it有关,但我想运行一个脚本,而不仅仅是弹出点击点的数据。

谷歌搜索暗示可以使用ButtonDownFcn,但我发现的示例需要手动绘制每个点并附加一个处理程序,如下所示:

hp = plot(x(1), y(1), 'o');
set(hp, 'buttondownfcn', 'disp(1)');

由于主图中有许多标记,是否可以将处理程序附加到整个曲线并调用子图绘图函数并单击标记的索引(首选)或坐标?

【问题讨论】:

    标签: matlab plot interactive marker clickable


    【解决方案1】:

    这是您需要的想法,如果我了解您的要求,应该可以帮助您入门。

    在这种情况下,当您选择一条曲线时,它将在底部子图中绘制它并保留颜色。

    function main
    subplot(211)
    h = plot (peaks);
    
    set (h,'buttondownfcn', @hitme)
    end
    
    function hitme(gcbo,evendata)
    subplot (212)
    hold on;
    
    col = get (gcbo,'Color');
    h2 =  plot (get (gcbo,'XData'),get (gcbo,'YData'));
    set (h2,'Color', col)
    
    pt = get (gca, 'CurrentPoint');
    disp (pt);
    end
    

    您可以通过在hitme 函数中简单地编写get(gcbo) 来探索您的get 选项。

    【讨论】:

    • 谢谢。尽管您的示例显示了如何获取 3D 数据的 2D 切片,但我更感兴趣的是获取单击的 2D 图形的标记的索引。例如,修改下面的代码,单击任何标记会打印相同的 XData 和 YData。我想改为点击标记的索引(1、2、3等)。功能主要数据=峰值; h = plot (1:size(data,2), data(1,:), 'o-'); set (h, 'buttondownfcn', @hitme) end function hitme (gcbo, evendata) get (gcbo, 'XData') get (gcbo, 'YData') end
    • 如果你想要的只是点,添加pt = get (gca, 'CurrentPoint');,如上图。它会给你一个 3D 点,所以根据你的需要,只需使用第一行。
    • 非常感谢!它给了我坐标,而不是标记的索引,但由于我知道原始矩阵,我可以从 x 坐标计算索引,例如圆形(pt(1))。
    猜你喜欢
    • 1970-01-01
    • 2020-06-27
    • 2016-12-10
    • 2021-01-19
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多