单击MATLAB绘图标记绘制子图
在Matlab 2011b中,我有一个多维矩阵,它最初是以2维的2D图表示的。我想用鼠标左键点击标记。单击标记可绘制其他尺寸的新图形,该图形由单击的值分割 这个问题与有关,但我想运行一个脚本,而不仅仅是关于点击点的弹出数据 谷歌暗示可以使用单击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)'); 由于主图形中有许多标记,是否可以将处
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))。