找回密码
 注册
Simdroid-非首页
查看: 75|回复: 6

plot后 currentdata获取坐标失效

[复制链接]
发表于 2013-5-18 23:03:39 | 显示全部楼层 |阅读模式 来自 山东青岛
% 主程序中的画图程序   
axes(handles.Fit_plot);
    cla(handles.Fit_plot,'reset');
    h1=loglog(t,pw,'r-');
    hold on;
    h2=loglog(tt,dpw,'r-');
    hold off;
    grid on;
%定义获取图上坐标的回调函数
function Fit_plot_ButtonDownFcn(hObject, eventdata, handles)
% hObject    handle to Fit_plot (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
   
% 显示图版坐标
%     pt=get(gca,'CurrentPoint');
%     x=pt(1,1);
%     y=pt(1,2);
%     x=num2str(x);
%     y=num2str(y);
%     coor=['t=' x 'hr' ' ; ' 'p(dp)=' y 'MPa'];
%     set(handles.Coordinate,'String',coor);% 静态文本框显示坐标

%问题描述:plot命令之前可以获取axes坐标,但是plot命令执行之后,get(gca,'CurrentPoint')命令失效。搜索网上相关信息,说是新的图像遮盖了axes原来的句柄,导致当前图像句柄没有获取,但是本人并没有哦弄清楚相关解决方法,求高手老师指导!!!感激不尽
发表于 2013-5-19 21:34:10 | 显示全部楼层 来自 北京
Simdroid开发平台
为何不在画新的图形的时候保存原axes的句柄呢?
假设原来的axes的handle为h,新的为hh
你要获取原来point的时候,就用axes(h)
否则就是axes(hh)

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2013-5-21 23:04:14 | 显示全部楼层 来自 山东青岛
liuyalong008 发表于 2013-5-19 21:34
为何不在画新的图形的时候保存原axes的句柄呢?
假设原来的axes的handle为h,新的为hh
你要获取原来point的 ...

谢谢斑竹老师解答,请给解答下怎样保存原来的axes句柄和新的axes句柄呢?谢谢您!

点评

你的代码里不有吗?h1=......,h2=.........,h1代表第1个,h2代表第2个  发表于 2013-5-21 23:20
回复 不支持

使用道具 举报

发表于 2013-5-21 23:20:23 | 显示全部楼层 来自 北京
yangandy 发表于 2013-5-21 23:04
谢谢斑竹老师解答,请给解答下怎样保存原来的axes句柄和新的axes句柄呢?谢谢您! ...

如果你的figure没有close
你的axes没有cla,或者被替换,句柄就可以获取:
第一次画完图后,h0=gca;这个就是original 句柄
在此axes存在的情况下,你可以继续新建axes
h1=axes('parent',fig1),fig1是你最初的figure
至此:
你要用h0的时候就axes(h0)
用h1的时候axes(h1)

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2013-5-23 22:41:46 | 显示全部楼层 来自 山东青岛
liuyalong008 发表于 2013-5-21 23:20
如果你的figure没有close
你的axes没有cla,或者被替换,句柄就可以获取:
第一次画完图后,h0=gca;这个 ...

h0=gca;
    h1=axes('parent',handles.Fit_plot);
    loglog(t,pw,'r-');
    h2=axes('parent',handles.Fit_plot);
    loglog(tt,dpw,'r-');
    grid on;
    xlabel('t/hr','FontSize',12);
    ylabel('dp/MPa,dp"/MPa','FontSize',12);
    xlim([10^-3,T_test]);
运行后显示
??? Error using ==> axes
An object of class axes, can not be a child of class axes.

Error in ==> Auto_Fit>Generate_Callback at 424
    h1=axes('parent',handles.Fit_plot);

Error in ==> gui_mainfcn at 96
        feval(varargin{:});

Error in ==> Auto_Fit at 42
    gui_mainfcn(gui_State, varargin{:});

Error in ==>
@(hObject,eventdata)Auto_Fit('Generate_Callback',hObject,eventdata,guidata(hObject))


??? Error while evaluating uicontrol Callback
这样是啥情况呢?
回复 不支持

使用道具 举报

发表于 2013-5-23 22:45:46 | 显示全部楼层 来自 英国
h1 = axes('parent', h) 要求h是figure的句柄。
你这里的handles.Fit_plot则是axes, 因而会有这个错误。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2013-5-23 22:52:17 | 显示全部楼层 来自 山东青岛
nwcwww 发表于 2013-5-23 22:45
h1 = axes('parent', h) 要求h是figure的句柄。
你这里的handles.Fit_plot则是axes, 因而会有这个错误。 ...

可能我没有说清楚,我在GUI中建立了一个axes控件,一个statictext控件,一个pushbutton控件,想要实现按下pushputton后,在axes中画出两条曲线,然后画完曲线,鼠标移动到图上点击,在Statictext控件中显示图中鼠标所在坐标。现在问题就是怎么样获取画完图后的axes句柄,传递到坐标获取程序的Fit_plot_ButtonDownFcn中?再次感谢大师们耐心解答
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-9-22 12:22 , Processed in 0.043335 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表