色彩映射发生变化时执行功能

时间:2015-08-07 08:40:44

标签: matlab plot callback matlab-guide

我正在开发一个GUI控件MATLAB(2014a)程序,其中有一个绘图窗口,在基于contour的绘图之上显示pcolor - 类似的绘图。

用户发现,通过右键单击颜色栏可以更改colormap。但是,由于pcolor函数的内部原因,此更改仅直接影响contour图。

我已经找到了如何从我的轴对象中获取更改的colormap并将其应用于contour图,但我仍然需要手动重做图。

colormap / axes对象的figure更改后是否会执行回调?

我读到了PropertyChangeCallback,但colormap似乎并未存储为属性。

1 个答案:

答案 0 :(得分:1)

您无需借助未记录的功能来拦截Matlab pre-HG2中的LEFT join table_type tti on (tti.id=tAi.type_id and tti.code='in') 更改。您只需将监听器附加到属性colormap的{​​{1}}事件。

作为一个简单的例子,如果你的数字已经存在,只需输入:

'PostSet'
在控制台中

,每次更改'Colormap'时都会收到一条消息。请注意,无论是否触发事件:

  • 您将lh = addlistener( h.fig , 'Colormap' , 'PostSet' , @(h,e) disp('cmap changed !') ) 完全更改为另一个(例如,从colormap更改为colormap
  • 您更改了色彩图的大小(分割数)。 (例如:jet
  • 您使用" 交互式色彩映射转移" gui tool。

请注意,如果您使用hsv,事件将。此命令不会更改colormap(jet(5))本身,而是更改某些颜色映射到它的方式。因此,如果您使用此命令,您的caxis将被修改(尽管色彩图赢了)。 colormap命令会更改当前 pcolor caxis属性(不是CLim!)。因此,如果要检测它,则必须在正确的轴上将侦听器附加到此属性。类似的东西:

axes

作为一个更加应用的例子,这是一个小演示,每当figure发生变化时它都会做出反应。由于我不知道你计划在每次更改时对你的lh = addlistener( gca , 'CLim' , 'PostSet' , @(h,e) disp('clim changed !') ) 情节做些什么,我只是修改了几个属性,只是为了表明它正在做某事。根据您的需要进行调整。

colormap

cmap_event_demo