MATLAB不能使用ButtonDownFcn保存每个轴鼠标点击子图

时间:2015-11-04 01:00:03

标签: matlab subplot ginput

我有一个3x1子图,我已经想出如何捕获鼠标点击坐标并将它们存储到每个轴内的数组中。但是,我想修改我的代码,以便我能够一次性存储每个轴的鼠标点击。

这是我的代码:

function Callbacks

   x = 0:30;
   y1 = 1.5*cos(x);
   y2 = 1.5*cos(x)*10;
   y3 = 1.5*cos(x)*100;

   subplot(3,1,1)
   plot(x,y1,'ButtonDownFcn',{@lineCallBack,'plot1'})

   subplot(3,1,2)
   plot(x,y2,'ButtonDownFcn',{@lineCallBack,'plot2'})

   subplot(3,1,3)
   plot(x,y3,'ButtonDownFcn',{@lineCallBack,'plot3'})

end

function lineCallBack(src,evt,tag_name)

   src.Tag = tag_name;
   N=2;
   P1array = zeros(N,2);
   P2array = zeros(N,2);
   P3array = zeros(N,2);

   for k = 1:N
       if strcmp(tag_name,'plot1')
           [P1array(k,1),P1array(k,2)] = ginput(1);
           hold on;
           plot(P1array(k,1),P1array(k,2),'*r')
       elseif strcmp(tag_name,'plot2')
           [P2array(k,1),P2array(k,2)] = ginput(1);
           hold on;
           plot(P2array(k,1),P2array(k,2),'*r')
       elseif strcmp(tag_name,'plot3')
           [P3array(k,1),P3array(k,2)] = ginput(1);
           hold on;
           plot(P3array(k,1),P3array(k,2),'*r')
       end
   end

输出

P1array = 
    1 2
    3 4
P2array = 
    0 0
    0 0

P3array = 
    0 0
    0 0

如上面的输出所示,点击后,它似乎只捕获我点击的最后一个轴的坐标。我希望能够获得所有轴点的值。有人可以帮忙吗?感谢。

0 个答案:

没有答案