matlab - matlab指南,缩放时发出事件(或信号)
问题描述
我在 Matlab 中有一个使用guide
. 这个 GUI 里面是一个axes
. 我想在有人更改此图的缩放比例时立即发出信号。
为什么:
我需要更改XTickLabels
. 放大XTick
更改时,我需要更新XTickLabels
. 无法对XTick
值进行硬编码(因为您应该能够放大并获得更好的拟合XTick
值)。
在带有 Qt 的 C++ 中,只要缩放因子发生变化,我就会简单地发出一个信号,并将其连接到一个更改XTickLables
. 我不知道如何用 MATLAB 来做到这一点。
解决方案
我评论中的链接解释了如何将 a 附加listener
到任何(Observable)属性更改,但如果您只对缩放操作触发的事件感兴趣,则可以获取zoom
对象直接触发的事件。
下面是一个关于如何将事件处理程序附加到缩放对象的小演示:
function demozoomevent
% Listen to zoom events
% Sample figure and plot
plot(1:10);
% retrieve the zoom object handle
h = zoom;
% set the callback for 'before' and 'after' zoom event
h.ActionPreCallback = @myprecallback;
h.ActionPostCallback = @mypostcallback;
% Activate the zoom
h.Enable = 'on';
function myprecallback(obj,evd)
% will be executed BEFORE the zooming happens
disp('A zoom is about to occur.');
function mypostcallback(obj,evd)
% will be executed AFTER the zooming happended
newLim = evd.Axes.XLim;
msgbox(sprintf('The new X-Limits are [%.2f %.2f].',newLim));
注意:这种方式不会监听XLim
或关联的任何更改XTickLabel
,而只会监听缩放事件。如果您想使用该方法,请考虑对pan
对象执行相同的操作,因为它也可用于更改XLim
轴的 。
推荐阅读
- php - 用于社交媒体抓取的 php .htaccess 重定向页面
- matplotlib - 如何在一个条形图中添加多条条/线?
- react-native - 在 React Native 中解码令牌
- spring - createIndex=true 不会在 Elasticsearch 中创建索引映射
- javascript - Mongo 将多个文档聚合为一个
- azure-data-explorer - Kusto:如何将表值转换为标量并从用户定义的函数返回
- angular - ERROR ReferenceError: M is not defined //Materialize//
- debugging - nexti gdb 和 _GetStdHandle@4 完成程序
- javascript - window.addEventListener('beforeunload' 在 chrome 中不起作用
- python - 对于 int __pow__ int 的 python 类型提示,如何修复 mypy 错误“Expression has type Any [misc]”?