在Octave中获取绘图数据点的值

3
我正在尝试使用Octave作为Matlab的替代品,但看起来Octave中的图形绘制不像Matlab那样交互性强。
我想通过在图形上点击来查找数据点的x和y坐标值。
我见过ginput函数,但是当我的图形处于打开状态时,如果调用该函数并单击图形中的某一点,然后按Enter键,我会得到以下结果:
[x, y, buttons] = ginput ()  
x = [](0x0)
y = [](0x0)
buttons = [](0x0)  

在瞎折腾的过程中,我成功地获取了正确的坐标值。

figure(1); [x, y, buttons] = ginput ()
x =  69.09677419354838
y =  127.2917862029395
buttons = 13  

但我不确定我做了什么不同的事情,而且我再也无法让它发生了。

在Octave图中如何单击数据点并找到它的值(x和y,或者至少只有y)?是否可以使用ginput或Octave中的任何其他函数选择图中的确切数据点?


请提及您使用的Octave版本以及它是GUI还是控制台。默认的GUI界面在您用鼠标悬停时会在图形的左下角突出显示坐标。 - Tasos Papastylianou
我刚刚也测试了"ginput",看起来出现了一个bug。我建议你提交一个bug(如果还没有)。与此同时,你可以使用get(gca, 'currentpoint')作为一种解决方法来实现你想要的功能。 - Tasos Papastylianou
@Tasos 这是 octave-4.4.1-w32 版本,我正在使用图形用户界面。在 octave 中是否有可能获得更交互式的图形绘制(类似于 matlab,至少具备点击和查看数据点的功能)? - user13267
看起来键盘事件被正确注册了,而鼠标事件则被忽略了。你收到回复的时间很可能是你按下了一个键(不确定13号键是什么)。 - Tasos Papastylianou
@Tasos 谢谢,已点赞。 - user13267
显示剩余6条评论
1个回答

1
上述行为似乎是QT界面的一个错误。fltk界面按预期工作。请尝试:
graphics_toolkit fltk

启用它。

同时,我会提交一个错误报告。 已提交错误报告

PS. 键盘事件似乎可以正常检测,但鼠标事件不行,因此返回空列表。'13' 的意外输出可能来自按下“小回车”并注册了一个换行键盘事件,然后再按下“大回车”从而强制ginput返回。

更新 现在切换回qt界面并再次尝试可以使鼠标事件正常工作。这个问题在重启 octave 后仍然存在。奇怪的 bug。


只是一个小问题,小回车键是在数字键盘旁边的那个,而大回车键是键盘中间的那个吗? - user13267
@user13267 看一下更新。也许这对你也有用? - Tasos Papastylianou
@user13267 顺便回答你问题的隐含第二部分:抱歉,Octave没有像Matlab那样的图形“数据工具”。我建议只是添加标记并使用ginput进行绘图;如果你想要更准确的测量结果,在使用ginput之前可以放大图像,但仅限于此。你也可以检查绘图对象的“xdata”和“ydata”,并编写一个小函数来获取最近的点。 - Tasos Papastylianou

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接