Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单击MATLAB绘图标记绘制子图_Matlab_Plot_Interactive_Marker_Clickable - Fatal编程技术网

单击MATLAB绘图标记绘制子图

单击MATLAB绘图标记绘制子图,matlab,plot,interactive,marker,clickable,Matlab,Plot,Interactive,Marker,Clickable,在Matlab 2011b中,我有一个多维矩阵,它最初是以2维的2D图表示的。我想用鼠标左键点击标记。单击标记可绘制其他尺寸的新图形,该图形由单击的值分割 这个问题与有关,但我想运行一个脚本,而不仅仅是关于点击点的弹出数据 谷歌暗示可以使用ButtonDownFcn,但我发现的示例需要手动绘制每个点并附加一个处理程序,如下所示: hp = plot(x(1), y(1), 'o'); set(hp, 'buttondownfcn', 'disp(1)'); 由于主图形中有许多标记,是否可以将处

在Matlab 2011b中,我有一个多维矩阵,它最初是以2维的2D图表示的。我想用鼠标左键点击标记。单击标记可绘制其他尺寸的新图形,该图形由单击的值分割

这个问题与有关,但我想运行一个脚本,而不仅仅是关于点击点的弹出数据

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

hp = plot(x(1), y(1), 'o');
set(hp, 'buttondownfcn', 'disp(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图形的标记的索引。例如,修改下面的代码时,单击任何标记都会打印相同的扩展数据和YData。我想点击标记的索引(1、2、3等)。功能主数据=峰值;h=图(1:尺寸(数据,2),数据(1,:),‘o-’);设置(h,'buttondownfcn',@hitme)结束函数hitme(gcbo,evendata)get(gcbo,'XData')get(gcbo,'YData')end如果您只需要点,请添加
pt=get(gca,'CurrentPoint'),如上所示。它会给你一个3D点,所以根据你的需要,只需使用第一排。非常感谢!它给了我坐标,而不是标记的索引,但由于我知道原始矩阵,我可以从x坐标计算索引,例如圆形(pt(1))。