【发布时间】:2015-06-09 17:50:43
【问题描述】:
我在带有 GUI 的 matlab 中有程序代码。我有一些名为“axes1”的轴对象 - 显示了我的绘图(x、y 值的简单绘图)。
我希望在线点之后显示该点的 Y 轴值。最好是动态显示 - 移动光标后,值会自动显示新的指向值。
我看到了一些关于这方面的教程,但我无法将他们的技巧应用到使用 GUI 编程。
【问题讨论】:
标签: matlab user-interface plot
我在带有 GUI 的 matlab 中有程序代码。我有一些名为“axes1”的轴对象 - 显示了我的绘图(x、y 值的简单绘图)。
我希望在线点之后显示该点的 Y 轴值。最好是动态显示 - 移动光标后,值会自动显示新的指向值。
我看到了一些关于这方面的教程,但我无法将他们的技巧应用到使用 GUI 编程。
【问题讨论】:
标签: matlab user-interface plot
这是一个非常简单的示例,说明您可以使用datacursormode,这是一个交互式光标,可让您选择图形上的点并获取它们的坐标。您可以轻松地自定义示例并将坐标存储在变量中等等,但是这部分由您决定:)。
这是带有 cmets 的 GUI 代码。您可以复制/粘贴到新的 .m 文件中进行测试和播放。 GUI 只是一个轴,我在其中显示随机数据和一个复选框,您可以使用它来切换datacursormode 的激活(即打开或关闭)。
function DispYData
clear
clc
global dcm_obj
%// Create figure and ui controls
hFig = figure('Position',[200 200 500 500]);
handles.Axes = axes('Position',[.2 .2 .7 .7]);
plot(1:20,rand(1,20));
%// Create datacursor. Disable for the moment.
dcm_obj = datacursormode(hFig);
set(dcm_obj,'Enable','off')
handles.checkbox = uicontrol('Style','check','Position',[20 50 120 20],'String','Activate datacursor','Callback',@(s,e) GetPos);
guidata(hFig,handles)
function GetPos
%// If checked, activate datacursor mode
if get(handles.checkbox,'Value')
set(dcm_obj,'Enable','on')
%// If uncheck, disable.
else
set(dcm_obj,'Enable','off')
end
guidata(hFig,handles)
end
end
启用数据光标模式并选择曲线上的点后的 GUI 截图示例:
玩得开心!
【讨论】: