Matlab指南:当用户单击时,我如何分散?
我想编程一个新向导项目的“axes1”部分,当用户单击轴时,它会分散轴内的点 我是新来的导游,我不完全了解hObjec、手柄等是如何工作的。到目前为止,我从其他帖子中收集到以下代码:Matlab指南:当用户单击时,我如何分散?,matlab,click,matlab-guide,scatter,Matlab,Click,Matlab Guide,Scatter,我想编程一个新向导项目的“axes1”部分,当用户单击轴时,它会分散轴内的点 我是新来的导游,我不完全了解hObjec、手柄等是如何工作的。到目前为止,我从其他帖子中收集到以下代码: % --- Executes on mouse press over axes background. function axes1_ButtonDownFcn(hObject, eventdata, handles) % hObject handle to axes1 (see GCBO) % event
% --- Executes on mouse press over axes background.
function axes1_ButtonDownFcn(hObject, eventdata, handles)
% hObject handle to axes1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%axesHandle = get(hObject,'Parent');
coordinates = get(hObject,'CurrentPoint');
coordinates = coordinates(1,1:2);
scatter(coordinates(1),coordinates(2));
我没有使用“get(hObject,'Parent')”部分,因为在使用图像在轴中显示的情况下使用了该部分,而这不是我的情况
有人能解释一下我怎么做吗
提前感谢您抽出时间我在几个月前解决了这个问题,但我没有发布解决方案 这比我想象的要容易,我只需将每次鼠标按下存储为
(x,y)
点,然后使用绘图
:
% ND = Nodes in the network
ND = zeros(N,2);
ND(1,:) = ginput(1);
plot(ND(1,1),ND(1,2),'ko','MarkerSize',12);
hold on;
for i=2:N
ND(i,:) = ginput(1);
plot(ND(i,1),ND(i,2),'ko','MarkerSize',12);
end
这段代码的行为与您想要的有什么不同?先发制人的潜在相关点:
axes1
是否设置了hold on
设置?此代码应该在鼠标在axes背景上按下时执行。对我来说,这意味着,如果我点击轴,它就会执行,与鼠标箭头的位置无关,它会得到鼠标箭头的坐标,并在点击后散射它们,但它什么也不做。我尝试添加一行代码来检查它是否正确执行(例如,我添加了'a=123'),以便在Matlab屏幕上显示函数是否正确调用,但是什么也没发生,所以我猜轴的工作方式不像我第一次想到的那样简单。axes1
的ButtonDownFcn
属性在指南中明确设置为该函数?如果轴是透明的(Color=='none'
),它将不会收到单击(它们会转到下面的图)。类似地,如果单击轴中的线或图像,则单击事件将转到该对象,而不是轴本身。我的代码如下:%---在鼠标按下轴背景时执行。函数axes1_ButtonDownFcn(hObject,eventdata,handles)%hObject handle to axes1(请参见GCBO)%eventdata reserved-将在未来版本的MATLAB%handles结构中定义,带有句柄和用户数据(请参见GUIDATA)%axesHandle=get(hObject,'Parent');坐标=get(hObject,'CurrentPoint');坐标=坐标(1,1:2);散布(坐标(1)、坐标(2))代码>我没有将其更改为透明,是否可以默认设置为透明?